특정 파일 목록을 어떻게 chmod / chown 할 수 있습니까? 번 호출하지

폴더 권한을 설정하기 위해 .sh 스크립트를 작성하고 싶지만 다음과 같은 것을 실행할 수 있는지 궁금합니다.

chown -644 ./one;/two;/three

chown을 여러 번 호출하지 않고 폴더 목록을 chown합니다.

또한 파일 목록을 숨기고 예를 들어 다음과 같은 다른 파일을 제외하는 방법이 있습니다.

chown -R -664 ./*;!./cache

의사 명령 줄이 의미가 있기를 바랍니다.



답변

거의 모든 유닉스 도구는 파일 목록을 옵션이 아닌 인수로 받아들입니다. 평소와 같이 다른 인수는 공백으로 구분해야합니다.

chown 644 one two three

두 번째 예에서 Bash를 사용하는 경우 간단한

chown -R 644 !(cache)

충분할 것입니다.

이 방법에는 확장 된 패턴 일치가 필요합니다. 비활성화되어 있으면

shopt -s extglob

참조 : Bash Reference Manual # Pattern Matching


답변

mod-these.txt에 파일 이름 목록을 만들고 다음을 실행하십시오.

chmod g+w `cat mod-these.txt`

또는 다른 사람들이 설명한 방법을 여기에서 사용하십시오.

chown 644 one two three

또는 첫 번째 옵션으로 도시로 이동하지만 파일의 각 줄을 조작하십시오 (이 예에서는 “/”(이전 공백)을 “./”로 대체).

chmod g+w `sed 's/ \// .\//' update-writable.txt`

답변

승리를 위한 정규식 !

찾기를 사용하는 것은 특정 쉘이나 이미 사용중인 응용 프로그램에 이미 존재할 수있는 정규 표현식을 사용하는 것 이외의 방법으로 생각할 수있는 가장 좋은 방법입니다. 먼저, 나는 시도했다 :

touch one&touch two &touch three&find -name "one|two|three" -exec chown -644 {} \;

그러나이 경우 파이프가 작동하지 않는 것을 알 수 있습니다. chmod, chown, chgrp, et를 배우는 것과 같은 또 다른 슬픈 것은 … 알. 다중 파일 / 정규식 선택 / 제외 자체를 지원하지 않습니다 …
내가 찾은 해결책 : https :
//.com/questions/19111067/regex-match-either-string-in-linux-find-command

find \( -name one -o -name two -o -name three \) -exec chown -644 {} \;

따라서 승리를위한 정규 표현식은 아니지만 적어도 하나의 라이너로 프로그램의 인수에 파일 목록을 삽입하는 방법이 있습니다.

() 메타 문자를 이스케이프하고 각 추가 이름에 -o 매개 변수를 추가해야합니다.

: 당신의 여행을 따라 당신이 관심을 가질만한 다른 링크 나 콘텐츠
– 콘 본 쉘과 친구들의 노트 각종 맛있는 가벼운 음식. -Dave Horner의 웹 사이트

건배.
–dave


답변

수정하려는 파일이 하나의 디렉토리에 있으면 필요한 패턴으로 파일을 ls 할 수 있습니다.

예를 들어 pwd에서 다운로드 한 모든 .run 파일을 실행 파일로 변경해야합니다.

chmod +x `ls *.run`