0

我有一些 unix 代码来删除一些文件,但其中一些文件的名称中包含空格(一或两个)。所以迭代和删除不起作用。有人可以帮助我吗?代码:

对于文件名在ls temp_for* | grep "temp_for_...\.lst"

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

4

3 回答 3

2

使用read读取整行:

ls ... | grep  ... | while read i 
do rm "$i"
done

或使用find

find . -name '...' -exec rm {} \;

或将 find 与xargs一起使用:

find . -name '...' -print0 | xargs -0 rm
于 2012-10-01T12:01:07.040 回答
0

如果将文件名用单引号括起来,那么它将转义空格和特殊字符。您也可以使用反斜杠来转义空格和其他字符。

示例 1:

`'带空格的文件名'

示例 2:

文件名\带\空格

于 2012-10-01T12:03:48.950 回答
0

用引号$filename括起来,像这样:

if [ -f "$file_name" ]
于 2012-10-01T12:03:49.777 回答