나는 이것을 가지고있다:
chmod u+x $(find scripts -name "*.sh")
그러나 결과는 줄 바꿈으로 구분되므로 찾기 목록의 첫 번째 항목에서만 chmod u+x를 실행한다고 생각합니다.
find 호출에서 반환된 각 항목에 대해 chmod u+x를 어떻게 실행합니까?
내 생각에는 xargs가 가장 좋은 방법일까요? 이 같은:
find scripts -name "*.sh" | xargs chmod u+x
답변1
가장 안전한 방법은 직접 find
실행 chmod
하고 파일을 선택할 때 더욱 주의하는 것입니다.
find scripts -type f -name '*.sh' -exec chmod u+x {} +
scripts
그러면 이름이 로 끝나는 디렉토리 안이나 아래의 모든 일반 파일을 찾고 동시에 가능한 한 많은 파일에서 실행 .sh
됩니다 . chmod u+x
잠재적으로 이상한 파일 이름을 문제 없이 처리합니다.
권한이 필요한 파일에 대해서만 권한을 변경하려면:
find scripts -type f -name '*.sh' ! -perm -u+x -exec chmod u+x {} +