0

I have a .txt file and on each line is a different file location e.g.

file1.zip
file2.zip
file3.zip

How can I open that file, loop through each line and rm -f filename on each one?

Also, will deleting it throw an error if the file doesn't exist (has already been deleted) and if so how can I avoid this?

EDIT: The file names may have spaces in them, so this needs to be catered for as well.

4

2 に答える 2

1

forループを使用しcatて、行を反復処理できます。

IFS=$'\n'; \
for file in `cat list.txt`; do \
    if [ -f $file ]; then \
        rm -f "$file"; \
    fi; \
done

if [ -f $file ]、ファイルが存在し、通常のファイル (ディレクトリではない) であるかどうかをチェックします。チェックに失敗した場合はスキップされます。

上部のIFS=$'\n'は、区切り文字を改行のみに設定します。これにより、空白を含むファイルを処理できます。

于 2012-09-24T11:57:22.893 に答える
0

xargs -n1 echo < test.txt

「echo」を rm -f またはその他のコマンドに置き換えます。使用することもできますcat test.txt |

詳細については、「man xargs」を参照してください。

于 2012-09-24T11:57:09.567 に答える