すべてをコピーする必要があります*.jar
ディレクトリおよびそのすべてのサブディレクトリからのファイル。 UNIX/Linuxターミナルでどのようにできますか?コマンドcp -r *.jar /destination_dir
は機能しません。
rsync
は、マシン間だけでなくローカルファイルのコピーにも役立ちます。これはあなたが望むことをします:
rsync -avm --include='*.jar' -f 'hide,! */' . /destination_dir
からのディレクトリ構造全体。/destination_dirにコピーされますが、.jarファイルのみがコピーされます。 -aは、ファイルに対するすべての許可と時刻が変更されないようにします。 -mは空のディレクトリを省略します。 -vは詳細出力用です。
ドライランの場合は、-nを追加します。何を実行するかを示しますが、実際には何もコピーしません。
Jarファイルのみのディレクトリ構造が必要ない場合は、次を使用できます。
shopt -s globstar
cp **/*.jar destination_dir
ディレクトリ構造が必要な場合は、cp
の--parents
オプション。
Findに-execスイッチがあり、cpに-tオプションがある場合:
find . -name "*.jar" -exec cp -t /destination_dir {} +
並列呼び出しに「+」が提供されない場合は、「;」を使用できます。ただし、-t
を省略できます。
find . -name "*.jar" -exec cp {} /destination_dir ";"
tar -cf - `find . -name "*.jar" -print` | ( cd /destination_dir && tar xBf - )
cp --parents `find -name \*.jar` destination/
man cp
から:
--parents
use full source file name under DIRECTORY
宛先の下で同じディレクトリ階層を維持する場合は、次を使用できます。
(cd SOURCE && find . -type f -name \*.jar -exec tar cf - {} +) \
| (cd DESTINATION && tar xf -)
この方法では、find
の出力をバックティック内で拡張する代わりに、任意の数のファイルを処理できるという利点があります。
find . -name \*.jar | xargs cp -t /destination_dir
Jarファイル名にスペースが含まれておらず、cp
に「-t」オプションがあると仮定します。 cp
が「-t」を実行できない場合
find . -name \*.jar | xargs -I FILE cp FILE /destination_dir