我想更改以数字 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
等文件名。