我想查看目录和子目录中的所有文件然后删除具有特殊名称
的文件这是我的代码
for filename in $1*;do
if("$filename" == "hello.txt");then
echo "WOW!"
fi
done
我的测试目录是测试/有两个文件。一个名称" hello.txt"one_answers" world.txt";但是,当我运行代码时,我会收到
noStrange.sh: line 2: TEST/hello.txt: Permission denied
noStrange.sh: line 2: TEST/world.txt: Permission denied
我尝试了命令chmod u+x scriptname
,它不起作用
这就是我输入
sh scriptname TEST/
谁能告诉我脚本有什么问题?
使用 basename
命令从文件路径变量获取文件的basename。
for filename in $1*;do if [[ $(basename "$filename") == "hello.txt" ]] ; then echo "wow";fi; done
或
使用查找命令。这将搜索当前文件夹中的所有文件,以及它的子文件夹。
find . -name 'hello.txt'
直接答案是您的测试语法是错误的;你应该有
if ["$filename" == "hello.txt"]; then
等。但是,您的代码有一些问题。由于$filename
将匹配TEST/hello.txt
而不是hello.txt
,因此您可能不会获得所需的行为。另外,如果您要删除具有某些名称的文件,则可能需要一个像
rm TEST/hello.txt
如果您想删除图案,则可以使用Glob/通配符,或find
,xargs
和rm
的组合。例如
find TEST -name 'hello*.txt' | xargs rm