`tar`と`find`を使って元のファイル拡張子を削除します。

`tar`と`find`を使って元のファイル拡張子を削除します。

tb2このようなテキストファイルの束でファイルを作成したいと思います。tar cfj $(basename ./2014_04_09.txt .txt).tb2 $(basename ./2014_04_09.txt)

2014_04_09.tb2このコマンドを使用すると、ディレクトリなしでアーカイブファイルを作成できます。

-execしかし、このようなオプションを使用してコマンドを適用すると、find

find . -name "*.txt" -exec tar cfj $(basename "{}" .txt).tb2 $(basename "{}") \;

このコマンドは、元の拡張子(2014_04_09.txt.tb2)とアーカイブ内のディレクトリを持つアーカイブファイルを生成します。

単一のファイルのみを適用する場合tarなど、コマンドを使用する方法。find

答え1

-execシェルコマンドを使用する必要があります。

find . -name "*.txt" -exec sh -c 'tar cfj $(basename "{}" .txt).tb2 "{}"' -- {} \;

また、あなたのfindコマンドは次のとおりです。発見するあらゆるレベルの文書。したがって、basename現在のディレクトリにファイルがない場合、渡されたファイルのリストは使用できません。

詳細な説明、

tar cfj foo.tb2 foo.txt

foo.txt現在のディレクトリにない場合、エラーが発生します。したがって、パスをに渡す必要がありますfoo.txt

関連情報