ディレクトリの内容を再帰的に移動

ディレクトリの内容を再帰的に移動

あるフォルダ(Pictures)から別のフォルダ(Pictures-new)にファイルを繰り返し移動したいです。

「Pictures」フォルダには多くのサブフォルダがあるので、ここに投稿に従い、このコマンドを使用しました。

PicturesとPicturesnewはどちらも同じディレクトリにあります。すべてのサブフォルダを削除してデータをマージしたいです。

このフォルダがあるディレクトリで、次のコマンドを実行します。

find ./Pictures -type f -name "*.jpg" -print0 | 
xargs -0 -Imysongs mv -i mysongs ./Picturesnew

今、あなたが持っているPicturesnewフォルダがまったくないようで、20,000個のJPGファイルがどこに行ったのか混乱しています。

ベストアンサー1

本当に欲しいですか?

mkdir Picturesnew
find Pictures -type f -iname "*.jpg" -exec mv -i {} + Picturesnew/

mvはディレクトリを作成しません。

mvに-iオプションを使用すると、そのパイプラインで実行しても機能しません。 (しかし、良いことは、mvに元のファイルではなくPicturesnewに名前が変更された最初のファイルを踏みつけないように指示することです)。

私の解決策では、ターゲットディレクトリ名に末尾/を残し、ターゲットディレクトリを作成しないなどのエラーの可能性を最小限に抑えるために、実行中のmvの各インスタンスから複数のファイルを移動するようにfindに指示しました。目的のエラーを生成します。また、mvが単に次のファイル名を「いいえ」として扱うのではなく、ファイルの上書き確認メッセージを実際に表示できるという利点もあります。

おすすめ記事