如何更改以数字开头的文件的权限?

如何更改以数字开头的文件的权限?

我想更改以数字 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 

但这不起作用,我不知道我的错误在哪里。

答案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.txt2.txt3 good friends.txt100 billion humans.txt等文件名。

相关内容