回答:
-mindepth
オプションを使用することもできます:
find . -type f -mindepth 2 -exec mv -i -- {} . \;
(一緒に-maxdepth
ファイルを収集する階層レベルを制限することもできます。)
私はファイルを上書きする前にmv -i
(「インタラクティブ」)を使用してmv
質問しました。サブディレクトリがたくさんあるので、警告したい名前の衝突があるかもしれません。
--
オプションは、オプションの処理を停止するため、mv
ハイフンで始まるファイル名に惑わされません。
空のサブディレクトリの束全体をクリーンアップします
find . -depth -mindepth 1 -type d -empty -exec rmdir {} \;
-n, --no-clobber
既存のファイルを上書きしません。あなたも興味があるかもしれませ-b, --backup
ん。
これを試して:
find ./*/* -type f -print0 | xargs -0 -J % mv % .
詳細情報:find-stamementを単独で試してください-print0
。移動するすべてのファイルのリストが表示されます(は省略します)。例:
probe:test trurl$ find ./*/* -type f
./test_s/test_s_s/testf4
./test_s/test_s_s/testf5
./test_s/testf1
./test_s/testf2
./test_s/testf3
./test_s2/testf6
./test_s2/testf7
これで-print0
、xargs
実行するステートメントのリストを作成しています。-J %
フラグ手段は、ここではリスト要素を挿入し、そのmv $FILE .
検出されたすべてのファイルに対して実行されます。
上記はBSD xargsで動作します。GNUバージョン(Linux)を使用している場合-I %
は、-J %