(3 Antworten)
Vor 8 Jahren geschlossen.
Jedes Mal, wenn ich Tausende von Dateien in einen neuen Ordner verschieben möchte, stoße ich immer auf das gleiche Problem.
> mkdir my_folder
> mv * my_folder
mv: cannot move 'my_folder to a subdirectory of itself 'my_folder'
Obwohl ich denke, dass der obige Fehler harmlos ist (oder? ) Ich frage mich, ob es eine Möglichkeit gibt, dies zu vermeiden.
Falls es darauf ankommt, bin ich an einer Lösung in zsh interessiert oder an einer, die über verschiedene Shells hinweg gut funktioniert.
Akzeptierte Antwort:
In zsh mit dem extended_glob
Option aktiviert, können Sie ~
verwenden Um Muster von Globs auszuschließen, könnten Sie Folgendes verwenden:
setopt extended_glob
mv -- *~my_folder my_folder
Oder verwenden Sie den Negationsoperator (immer noch mit extended_glob
):
mv -- ^my_folder my_folder
Verwenden Sie geschweifte Klammern, um zu vermeiden, dass der Verzeichnisname zweimal eingegeben wird:
mv -- {^,}my_folder
In Bash (für andere Antwortsuchende, die es verwenden) können Sie erweiterte Globs im Ksh-Stil verwenden:
# If it's not already enabled
shopt -s extglob
mv -- !(my_folder) my_folder
Sie können diese Syntax auch in zsh
verwenden wenn Sie ksh_glob
aktivieren Option.