我有一些unix代码可以删除一些文件,但其中一些文件的名称中包含空格(一个或两个)。因此迭代和删除不起作用。有人能帮助我吗? 代码:
for ls temp_for* | grep "temp_for_...\.lst"
中的file_name
做
if [ -f $file_name ]
then
echo '$file_name'
rm "$file_name"
fi
完成
文件: temp_for_ 1 .lst, temp_for_ SI.lst, temp_for_f S.lst
答案 0 :(得分:2)
使用read阅读整行:
ls ... | grep ... | while read i
do rm "$i"
done
或使用find:
find . -name '...' -exec rm {} \;
或者使用xargs查找:
find . -name '...' -print0 | xargs -0 rm
答案 1 :(得分:0)
如果用单引号包装文件名,那么它将转义空格和特殊字符。您也可以使用反斜杠来转义空格和其他字符。
示例1:
`'带空格的文件名'
示例2:
Filename \ with \ spaces
答案 2 :(得分:0)
将$filename
括在引号中,如下所示:
if [ -f "$file_name" ]