Bash
如何更改以數字開頭的文件的權限?
我想更改以數字 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
但它不起作用,我不知道我的錯誤在哪裡。
您的程式碼包含一些與空格相關的語法問題,並且有
if
一個缺少fi
.如果您打算對目錄中名稱以 1 到 9 中的任何數字開頭的
456
所有文件設置數字權限,那麼您可以這樣做:/home/vs
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
等。