(3 risposte)
Chiuso 8 anni fa.
Ogni volta che voglio spostare migliaia di file in una nuova cartella, incontro sempre lo stesso problema.
> mkdir my_folder
> mv * my_folder
mv: cannot move 'my_folder to a subdirectory of itself 'my_folder'
Anche se penso che l'errore sopra sia innocuo (vero? ) Mi chiedo se c'è un modo per evitarlo.
Nel caso sia importante, sono interessato a una soluzione in zsh o a una che funzioni bene su varie shell.
Risposta accettata:
In zsh, con extended_glob
opzione abilitata, puoi usare ~
per escludere pattern dai glob, quindi potresti usare:
setopt extended_glob
mv -- *~my_folder my_folder
Oppure usa l'operatore di negazione (sempre con extended_glob
):
mv -- ^my_folder my_folder
Usa le parentesi per evitare di digitare due volte il nome della directory:
mv -- {^,}my_folder
In bash (per altri cercatori di risposte che lo utilizzano), puoi usare glob estesi in stile Ksh:
# If it's not already enabled
shopt -s extglob
mv -- !(my_folder) my_folder
Puoi anche usare quella sintassi in zsh
se abiliti ksh_glob
opzione.