GNU/Linux >> Linux Esercitazione >  >> Linux

Mv * Cartella (evitando l'errore "impossibile spostare")?

Questa domanda ha già risposte qui :“mkdir pippo; svn mv * foo”

(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.


Linux
  1. Gestione degli errori negli script Bash

  2. Comprendere i codici di errore HTTP e altri errori del sito Web

  3. Come duplicare esattamente una cartella

  4. Errore in phpMyAdmin dopo l'aggiornamento alla v4.8.0:$cfg['TempDir'] (./tmp/) non è accessibile

  5. sudo -i restituisce un errore

Come risolvere ERR_TOO_MANY_REDIRECTS

Correzione dell'errore "Impossibile scrivere nella cartella dell'applicazione" nel client BitTorrent di Vuze

Come proteggere con password una cartella in Linux

Monta una cartella remota con sshfs

Come comprimere la cartella su Linux

S maiuscola nei permessi di una cartella?