Bash

如何更改以數字開頭的文件的權限?

  • November 6, 2019

我想更改以數字 1 到 9 開頭的文件的權限(例如1.txt2.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等。

引用自:https://unix.stackexchange.com/questions/550605