chmod를 대화형으로 만드는 한 줄 명령이 있습니까?

chmod를 대화형으로 만드는 한 줄 명령이 있습니까?

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

ls | ask_yes_no_for_each_file | chmod +x the_files_approved

또는 유사한 구문.

또한 개별 확인을 원하는 다른 명령을 작업할 수도 있습니다.

답변1

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

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

이것은 일반적 으로 다음 find과 같은 이유로 사용됩니다.ls구문 분석 ls출력이 신뢰할 수 없습니다.. 그러나 를 사용하는 이 형식은 find줄 바꿈이나 기타 어려운 문자가 포함된 파일 이름에도 작동합니다.

설명

  • find . -maxdepth 1 -type f -print0

    그러면 파일이 선택됩니다. 이는 find의 다양한 옵션을 사용하여 사용자 정의할 수 있습니다. 이 옵션은 null로 구분된 목록에 파일 이름을 인쇄하도록 print0지시합니다 . find이는 파일 이름 목록을 전송하는 데 유일하게 신뢰할 수 있는 방법입니다.

  • xargs -L1 -p0 chmod +x

    이는 생성된 파일 이름의 null로 구분된 목록을 가져와 find해당 목록에 명령을 적용합니다.

-L1옵션은 xargs한 번에 하나의 파일 이름에만 작업하도록 지시합니다. 이 -p옵션은 xargs계속하기 전에 승인을 묻는 메시지를 표시합니다. 이 -0옵션은 xargs널 문자를 파일 이름 사이의 구분 기호로 사용하도록 지시합니다.

[ @kwan이 지적하기 전까지 -p는 옵션을 몰랐습니다 .]xargs

답변2

당신이 사용할 수있는 xargs.

예:

ls|xargs -I path -p chmod +x path

옵션 -p: 각 명령줄을 실행하고 터미널에서 줄을 읽을지 여부를 사용자에게 묻습니다. 응답이 'y' 또는 'Y'로 시작하는 경우에만 명령줄을 실행하세요.

관련 정보