何千ものファイルを新しいフォルダに移動しようとするたびに、常に同じ問題に直面します。
> mkdir my_folder
> mv * my_folder
mv: cannot move 'my_folder to a subdirectory of itself 'my_folder'
上記のエラーは無害だと思いますが(うん?)避ける方法があるかどうか疑問に思います。
重要な場合は、zshのソリューションやさまざまなシェルでうまく機能するソリューションに興味があります。
答え1
zshでextended_glob
このオプションを有効にすると、globで除外パターンを使用できるため、~
次のことができます。
setopt extended_glob
mv -- *~my_folder my_folder
または、否定演算子を使用してください(まだ使用されていますextended_glob
)。
mv -- ^my_folder my_folder
ディレクトリ名を2回入力したくない場合は、中かっこを使用してください。
mv -- {^,}my_folder
Bash(他の回答を探しているユーザーの場合)では、Kshスタイルの拡張グローブを使用できます。
# If it's not already enabled
shopt -s extglob
mv -- !(my_folder) my_folder
zsh
このksh_glob
オプションが有効になっている場合は、この構文を使用することもできます。
答え2
新しいサブディレクトリに加えて通常のファイルしかない場合は、findを使用できます。
find . -type f -maxdepth 1 -exec mv {} my_folder \;
この-type f
オプションはファイルのみを検索します(ディレクトリではありません)。-maxdepth 1
検索は.
(他のディレクトリでは繰り返されません)でのみ続行されます。あなたの-exec …
行動。
zsh ではこれを次のように短縮できます。
mv *(.) my_folder
はい、このエラーは無害です。
答え3
あなたはそれを使用することができます:
mv * my_folder 2>/dev/null