多くのサブディレクトリを含むディレクトリがあります。サブディレクトリには、さまざまなファイル拡張子を持つ多くの種類のファイルが含まれています。 1つのタイプのすべてのファイルを新しいディレクトリに移動したい(コピーではない)。これらすべてのファイルが同じディレクトリにある必要があります。つまり、フラットである必要があります。
(私の使用例は、*。epubと呼ばれる電子ブックを多くのディレクトリからEPUBリーダーが見つけられる単一のフォルダに移動したい場合です。)
Zshでは、再帰グロブを使用できます。
mkdir ~/epubs
mv -- **/*.epub ~/epubs/
Bash≥4では、shopt -s globstar
(これを~/.bashrc
に入れることができます)を実行してから、上記のコマンドを実行します。 kshでは、最初にset -o globstar
を実行します。
POSIXツールのみを使用して、find
を実行します。
find . -name '*.epub' -exec mv {} ~/epubs \;
これを試してください:
mkdir ../new_dir
find . -type f -name '*.epub' -exec mv {} ../new_dir/ \;
すべてのファイルの名前がname.epub
、次に、このように変数をインクリメントする必要があります( bash を使用)
mkdir ../new_dir
find . -type f -name '*.epub' |
while read a; do
((c++))
base="${a##*/}"
mv "$a" "../new_dir/${base%.epub}_$(printf %.03d $c).epub"
done
Linuxでbashを使用する:
shopt -s nullglob globstar
mv -t ~/epub_directory ~/big_dir/**/*.epub