UNIXでファイルをバッチコピー/移動する方法はありますか? cp/mv
のオプションかもしれないと思いましたが、それを行う方法が見つかりません。
cp
とmv
はどちらも、それぞれファイルのコピーと移動に適したツールです。 Shellコンストラクト(for file in *; do ...; done
のようなループ)またはfind
と組み合わせると、さらに強力になります。
私があなたの目的を正しく理解した場合、あなたは次のようなファイルを抽出しました:
somedir/file.png
somedir/file.txt
そして、次のようにすべてのファイルを親ディレクトリに移動したいとします。
file.png
file.txt
シェルワイルドカードを使用して、ディレクトリsomedir
にいると仮定すると、次のように使用できます。
mv * ../
*
は、現在のディレクトリ内のすべてのファイルに展開されるグロブパターンです。隠しファイル(ファイル名の先頭に.
が付いているファイルとディレクトリ)がある場合は、bash
のshopt -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/ \;
これは、すべてのファイル名が一意であることを前提としています。そうでない場合、ファイルは上書きされます。
rename はバッチ処理に適しているため、うまくいくかもしれません。