web-dev-qa-db-ja.com

UNIXでファイルをバッチコピー/移動しますか?

UNIXでファイルをバッチコピー/移動する方法はありますか? cp/mvのオプションかもしれないと思いましたが、それを行う方法が見つかりません。

4
rake

cpmvはどちらも、それぞれファイルのコピーと移動に適したツールです。 Shellコンストラクト(for file in *; do ...; doneのようなループ)またはfindと組み合わせると、さらに強力になります。

私があなたの目的を正しく理解した場合、あなたは次のようなファイルを抽出しました:

somedir/file.png
somedir/file.txt

そして、次のようにすべてのファイルを親ディレクトリに移動したいとします。

file.png
file.txt

シェルワイルドカードを使用して、ディレクトリsomedirにいると仮定すると、次のように使用できます。

mv * ../

*は、現在のディレクトリ内のすべてのファイルに展開されるグロブパターンです。隠しファイル(ファイル名の先頭に.が付いているファイルとディレクトリ)がある場合は、bashshopt -s dotglobを使用します。

findについては前に説明しました。次のようなファイルのツリーがある場合:

somedir/000.txt
somedir/a/001.txt
somedir/a/004.txt
somedir/b/003.txt
somedir/b/002.txt
somedir/whatever/somethingunique.txt

そして、1つのディレクトリ(たとえば、seconddir)内のすべてのファイルを移動するには、次のコマンドを使用します。

find -exec mv {} seconddir/ \;

これは、すべてのファイル名が一意であることを前提としています。そうでない場合、ファイルは上書きされます。

5
Lekensteyn

rename はバッチ処理に適しているため、うまくいくかもしれません。

0
Morgan