以下のコマンドを使用して表示される特定のファイルのリストがありますが、リストされたファイルを別のフォルダー、たとえば〜/ testにコピーするにはどうすればよいですか?
find . -mtime 1 -exec du -hc {} +
Eric Jablowの答えに加えて、ここに可能な解決策があります(私にとってはうまくいきました-linux mint 14/nadia)
find /path/to/search/ -type f -name "glob-to-find-files" | xargs cp -t /target/path/
「 xargsを使用して、名前にスペースと引用符が含まれるファイルをコピーするにはどうすればよいですか? 」も参照できます。
実際には、コピーコマンドでfind
コマンド出力を2つの方法で処理できます。
find
コマンドの出力にスペースが含まれていない場合、つまりファイル名にスペースが含まれていない場合は、次を使用できます。
Syntax:
find <Path> <Conditions> | xargs cp -t <copy file path>
Example:
find -mtime -1 -type f | xargs cp -t inner/
ただし、実稼働データファイルにはスペースが含まれている可能性があるため、ほとんどの場合、このコマンドは効果的です。
Syntax:
find <path> <condition> -exec cp '{}' <copy path> \;
Example
find -mtime -1 -type f -exec cp '{}' inner/ \;
2番目の例の最後の部分では、セミコロンもfind
コマンドの一部と見なされ、押す前にエスケープする必要があります Enter。そうしないと、次のようなエラーが表示されます。
find: missing argument to `-exec'
find /PATH/TO/YOUR/FILES -name NAME.EXT -exec cp -rfp {} /DST_DIR \;
GNU findを使用している場合、
find . -mtime 1 -exec cp -t ~/test/ {} +
これは、出力をxargs
にパイプするのと同様に機能しますが、そうすることの落とし穴を回避します(埋め込みスペースと改行をfind ... -print0 | xargs -0 ...
を使用せずに処理します)。
見つかったファイルを、現在のディレクトリ(現在のディレクトリではない)に対して1つ上のディレクトリに移動します。
find . -path "*/yourfolder/*" -type f -execdir mv {} .. \;