2

ファイル名のリストを含む txt ファイルがあります。bashで、リストで指定されたファイルのみをzipファイルから解凍するにはどうすればよいですか?

4

2 に答える 2

4

これは機能するはずです:

unzip -q /path/to/zipfile $(cat thetxtfile)

もちろん、このコマンドは、最初は空であることが望ましいディレクトリで発行する必要があります。

ファイル名にスペースがある場合、これは機能しないため、代わりにこれを行う必要があることに注意してください。

while read thefile; do unzip -q /path/to/zipfile "$thefile"; done <thetxtfile
于 2013-01-04T11:57:14.163 に答える
2

コマンドラインでファイルのリストを操作している場合、xargsほとんどの場合、 が最良の答えです。これは、スペースを含むファイル名をきれいに処理し、引数の数の制限を回避します。私はこれを提案します:

tr '\n' '\0' <filelist.txt | xargs -0 unzip -q /path/to/zipfile

を使用するtr '\n' '\0' <filelist.txtと、ファイルのリストが取得され、改行がヌル文字に置き換えられます。xargs -0ヌルで区切られたファイルのリストを読み取り、それを次のコマンドの引数リストに追加します。

ファイル名のリストが '\r\n' または '\r' スタイルの行末を使用している場合、これは壊れます。

于 2013-01-04T12:28:19.770 に答える