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
。