0

一部のファイルを削除する UNIX コードがありますが、これらのファイルの一部には、名前にスペース (1 つまたは 2 つ) が含まれています。したがって、反復と削除は機能しません。誰でも私を助けることができますか?コード:

for file_name in ls temp_for* | grep "temp_for_...\.lst" do

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 {} \;

または、xargsで find を使用します。

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

ファイル名を一重引用符で囲むと、スペースと特殊文字がエスケープされます。バックスラッシュを使用して、スペースやその他の文字をエスケープすることもできます。

例 1:

「スペースを含むファイル名」

例 2:

ファイル名\ with\ スペース

于 2012-10-01T12:03:48.950 に答える
0

$filename次のように引用符で囲みます。

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