chmod를 대화식으로 만드는 한 줄 명령이 있습니까? 것을 찾고있다 : ls | ask_yes_no_for_each_file

나는 다음과 같은 것을 찾고있다 :

ls | ask_yes_no_for_each_file | chmod +x the_files_approved

또는 유사한 구문.

개별 확인을 원하는 다른 명령에서도 작동 할 수 있습니다.



답변

이것은 당신이 찾고있는 것을합니다 :

find . -maxdepth 1 -type f -print0 | xargs -L1 -p0 chmod +x

일반적으로 구문 분석 출력이 신뢰할 수 없기 때문에 find대신에 사용합니다 . 그러나이 형식 은 개행 문자 나 기타 어려운 문자가 포함되어 있어도 파일 이름과 함께 작동합니다.lslsfind

설명

  • find . -maxdepth 1 -type f -print0

    파일을 선택합니다. find의 많은 옵션 중 하나를 사용하여 사용자 정의 할 수 있습니다. 이 옵션 print0find파일 이름을 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’로 시작하는 경우에만 명령 행을 실행하십시오.