通过迭代删除名称中包含空格的文件

时间:2012-10-01 11:59:03

标签: unix

我有一些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

3 个答案:

答案 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" ]