나는 다음과 같은 것을 찾고있다 :
ls | ask_yes_no_for_each_file | chmod +x the_files_approved
또는 유사한 구문.
개별 확인을 원하는 다른 명령에서도 작동 할 수 있습니다.
답변
이것은 당신이 찾고있는 것을합니다 :
find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x
일반적으로 구문 분석 출력이 신뢰할 수 없기 때문에 find
대신에 사용합니다 . 그러나이 형식 은 개행 문자 나 기타 어려운 문자가 포함되어 있어도 파일 이름과 함께 작동합니다.ls
ls
find
설명
-
find . -maxdepth 1 -type f -print0
파일을 선택합니다. find의 많은 옵션 중 하나를 사용하여 사용자 정의 할 수 있습니다. 이 옵션
print0
은find
파일 이름을 null로 구분 된 목록으로 인쇄하도록 지시 합니다. 이것은 파일 이름 목록을 전송하는 데 신뢰할 수있는 유일한 방법입니다. -
xargs -L1 -p0 chmod +x
널로 구분 된 파일 이름 목록이 생성되어
find
명령이 적용됩니다.
이 -L1
옵션은 xargs
한 번에 하나의 파일 이름에서만 작동하도록 지시 합니다. 이 -p
옵션은 xargs
계속하기 전에 승인하라는 메시지를 표시합니다. 이 -0
옵션은 xargs
널 문자를 파일 이름 사이의 구분자로 사용하도록 지시 합니다.
[ @kwan이 지적 할 때까지 -p
옵션을 xargs
몰랐습니다.]
답변
사용할 수 있습니다 xargs
.
예 :
ls|xargs -I path -p chmod +x path
옵션 -p
: 각 명령 줄을 실행할지 여부를 사용자에게 묻고 터미널에서 줄을 읽습니다. 응답이 ‘y’또는 ‘Y’로 시작하는 경우에만 명령 행을 실행하십시오.