特定のファイルが含まれていないサブディレクトリを別のディレクトリにコピーする

特定のファイルが含まれていないサブディレクトリを別のディレクトリにコピーする

dir1私はという名前の約800のサブディレクトリを含むというディレクトリを持っていますdisp-001, disp-002, ... disp-800stdout与えられた解決策に従ってファイルが含まれていないサブディレクトリのリストを取得しています。ここ〜のように

$ find . -type d \! -exec test -e '{}/stdout' \; -print

これで、ファイルが含まれていないサブディレクトリを別のディレクトリdir2にコピーしようとしています。私はこれを達成するためにxargsを使用します

$ find . -type d \! -exec test -e '{}/stdout' \; -print |xargs -I cp -r {} ../dir2

ただし、これによりエラーが発生します。xargs: {}: No such file or directory

このサブディレクトリを別のディレクトリにコピーする方法

答え1

必要ありませんxargsfind処理できます。

find . -mindepth 1 -type d \! -exec test -e '{}/stdout' \; -exec echo cp -r '{}' ../dir2 \;

または同様の作業を行うfind最新バージョンを使用してください(またはひどく800のフォーク!)。\+findxargs

  • -mindepth 1このフォルダを除外する必要があります./。それ以外の場合は、すべてのサブディレクトリがコピーされます。
  • このコマンドには、コピーを実行する前にどのプロセスが実行されているかを確認する-execデバッグオプションが含まれています。echo

関連情報