すべての.txtファイルをフォルダおよび対象のすべてのフォルダからターゲットディレクトリに移動するにはどうすればよいですか。特定のタイプのすべてのファイルをBashのターゲットディレクトリに移動します。
また、重要ではありませんが、含まれているフォルダに名前を変更することをお勧めします。私はbashに精通していません。
すべての.txtファイルをフォルダおよび対象のすべてのフォルダからターゲットディレクトリに移動するにはどうすればよいですか。特定のタイプのすべてのファイルをBashのターゲットディレクトリに移動します。
また、重要ではありませんが、含まれているフォルダに名前を変更することをお勧めします。私はbashに精通していません。
ファイルを再帰的に移動するには、find
とmv
を組み合わせてください。
find src/dir/ -name '*.txt' -exec mv {} target/dir/ \;
ファイルを移動するときにファイル名を変更するには、処理が複雑です。 1つの方法は、各ファイル名をスラッシュをアンダースコアに変換するtr/_
に渡すループを作成することです。
find src/dir/ -name '*.txt' | while read file; do
mv "$file" "target/dir/$(tr/_ <<< "$file")"
done
それだけで1つのレベルだ場合:
mv *.txt */*.txt target/directory/somewhere/.
これを試してみてください:それは焦がすMVプロセスを起動しないので
がfind source -name '*.txt' | xargs -I files mv files target
これは、-execと任意のオプションよりも速く動作します移動する必要があるすべてのファイルに対して
大きな解決策と真剣に速い... – Blacklight
受け入れられた答えよりもはるかに高速です。堅牢性のために、ゼロ終端のファイル名文字列を使用することをお勧めします。 'find source -name '* .txt' -print0 | xargs -0 -Iファイルmvファイルのターゲット ' – cooperised
埋め込み改行を含むファイルで動作するか、空白で始まるバージョン: 'find src/dir -name '* .txt' -exec bash -c 'mv" $ 1 "" $ {1 // \/_} "'_ {}'; '' –