2016-07-28 4 views
0

현재 디렉토리의 모든 실행 파일을 "실행 파일"이라는 폴더로 이동시키는 쉘 스크립트를 작성하려고합니다. 실행현재 디렉토리의 모든 실행 파일을 별도의 폴더로 이동하는 쉘 스크립트

1 for f in `ls` 
    2 do 
    3  if [ -x $f ] 
    4  then 
    5  cp -R $f ./executable/ 
    6  fi 
    7 done 

, 그것은 내가 만약 상태에서 '실행'폴더를 확인 피할 어떻게

cp: cannot copy a directory, 'executable', into itself, './executable/executable'. 

을 말한다. 또는 이에 대한 다른 완벽한 해결책이 있습니다.

+0

는 것들에 대한'find' 유틸리티를 사용하십시오. 그것은 문자열 기반 작업 대신 특정 기능을 처리하는 몇 가지 파일을 제공합니다. 예를 들어 검색을 일반 파일로 제한 할 수 있습니다. – arkascha

답변

0
  1. ls의 출력을 구문 분석하지 마십시오.
  2. 대부분의 디렉토리에는 실행 가능 비트 세트가 있습니다.
  3. cp이 복사 중이므로 mv이 움직입니다. GNU find으로

    for f in *; do 
        if [ -f "$f" ] && [ -x "$f" ]; then 
        mv "$f" executables/ 
        fi 
    done 
    

    :

스크립트를 적응

$ find . -maxdepth 1 -type f -perm +a=x -print0 | xargs -0 -I {} mv {} executables/ 
관련 문제