このディレクトリには約10,000個のファイルがあり、その一部は.fits、一部は.tarです。これで、.tarファイルを解凍するだけです。 if条件を実行するのは妥当であるようですが、untarコマンド「xvf」はファイルごとにのみ機能するため、ループは使用できません。
答え1
untar コマンド「xvf」はファイルごとにのみ機能します。
これはループを利用します。必要:
for file in ./*.tar; do tar xvf "$file"; done
答え2
実際にfind
ループなしでこれを行うことができます。このように:
find -iname '*.tar' -maxdepth 1 -exec tar xvf '{}' \;
ロジックは次のとおりです。
-iname
拡張子があるファイルと一致します.tar
(大文字と小文字を区別しません)。-maxdepth 1
一致を深さ1に制限します(したがって./*/*.tar
一致するものはありません)。- 最後に、一致するファイルに対してコマンドを実行します
-exec
(注、エスケープが必要です。詳細については参照)。tar xvf
;
{}
find(1)