
Bash 쉘 스크립트를 수정하려고 하는데 도움이 필요합니다.
여러 파일이 포함된 디렉토리가 있습니다. 나에게 필요한 것은 파일을 반복하고 파일 이름이 특정 파일 이름 집합에 없으면 파일 권한과 모드를 변경하는 것입니다.
이 같은:
for my_file in `ls my_dir/*.so`
do
if [ $myy_file ! in ["a.so", "b.so"]]; then
chmod 777 $my_file
chown igor $my_file
fi
done
컬렉션에 없는 여러 파일을 확인하는 것이 훨씬 쉽습니다. 그런 다음 더 큰 파일 이름 세트의 이름을 비교하십시오.
답변1
숨겨진 파일을 처리하고 싶지 않은 경우:
for f in my_dir/*.so; do
case $f in
(*/[ab].so) : ;;
(*) chmod 777 -- "$f"; chown igor -- "$f" ;;
esac
done
파일 권한을 다음으로 설정하십시오.777화보안 허점을 초래하고 chown
나중에 명령을 낭비하게 만드는 매우 나쁜 이상입니다.
답변2
대부분의 경우 다음과 같은 방법으로 if 루프 구조를 피할 수 있습니다.
chmod 777 -- my_dir/[^ab].so my_dir/*??.so
chown igor -- my_dir/[^ab].so my_dir/*??.so