1부터 9까지의 숫자로 시작하는 파일의 권한을 변경하고 싶습니다(예: 1.txt
등 2.txt
).
내 코드는 다음과 같습니다
#!/bin/bash
for(( i = 1 ; i < 10; i++))
do
for file in /home/vs
do
if[ "$file" == "$i" ];
then
chmod +456 $file
done
done
그러나 이것은 작동하지 않으며 내 실수가 어디에 있는지 모르겠습니다.
답변1
코드에 공백과 관련된 일부 구문 문제가 포함되어 있으며 if
문 하나가 누락되었습니다 fi
.
456
/home/vs
이름이 1에서 9 사이의 숫자로 시작하는 디렉토리의 모든 파일에 대해 숫자 권한을 설정 하려면 다음을 수행할 수 있습니다.
for (( i=1; i<=9; ++i )); do
chmod 456 /home/vs/"$i"*
done
chmod
특정 번호로 시작하는 파일이 없으면 불만이 발생할 수 있습니다. 따라서 우리가 알고 있는 이름을 반복하는 것이 더 일반적입니다.
for pathname in /home/vs/[1-9]*; do
chmod 456 "$pathname"
done
이것을 하나의 명령으로 단축할 수 있습니다
chmod 456 /home/vs/[1-9]*
chmod
이름이 1 에서 9 사이의 숫자로 시작하는 모든 파일을 호출합니다 /home/vs
. 그러나 그러한 파일이 수천 개 있으면 실패합니다(명령이 실행하기에 너무 커서 루프를 사용하는 경우).
.txt
파일 이름 일치를 파일 이름 접미사가 있는 파일 로만 제한하려면 [1-9]*.txt
위 명령을 사용하십시오. 이는 1.txt
, 2.txt
, 등과 같은 파일 이름과 일치합니다 3 good friends.txt
.100 billion humans.txt