すべてのファイル(フォルダやディレクトリを除く)を既存のフォルダやディレクトリより2つ下のレベルに移動する方法を知りたいです。
答え1
findコマンドを使用する必要があります。
find . -type f -name "*" -print0 | xargs -0 -I {} mv {} ../backup_dir ; mv ../backup_dir ./new/directory
findが移動する新しいファイルを探すループに閉じ込められるのを防ぐために、ファイルを1レベル上に移動しました。次に、ディレクトリを2つのレベルより下に移動します。
現在のディレクトリのファイルのみが必要な場合は、次のコマンドを使用できます。
find . -type f -maxdepth 1 -name "*" -print0 | xargs -0 -I {} mv {} ../backup_dir
答え2
zshが利用可能な場合、これは非常に簡単です。このパターンは*
すべてのファイル(ディレクトリを含む)と一致します。通常のファイルのみを一致させるには、次を追加します。グローバル予選 .
。 Glob修飾子はzshの機能です。
mv *(.) existing/subsubdirectory/
(名前が(「dot-file」)で始まるファイルは実際には*
スキップされます.
。ここでは問題にならない可能性がありますが、移動する必要がある場合はD
括弧内にファイルを入れてください)