[LugBS] R: bash scripting: muovere files
Vernia, Damiano (Selex ES Guest, Italy)
damiano.vernia a guests.selex-es.com
Mer 3 Lug 2013 06:20:05 UTC
Ciao,
ti hanno già risposto riguardo allo spostamento, ma in questa e-mail c'è un'altra domanda.
Per come hai scritto il comando la variabile dir varrà , lettaralmente, "dir1/" (senza virgolette). Quando bash espande i parametri del comando mv li trova tra doppi apici (o virgolette) e quindi espande la variabile ("$dir" diventa "dir1/", senza virgolette) ma NON espande l'asterisco (e nemmeno l'ininfluente '/') per cui il parametro diventa lettarlmente "dir1//*" (senza virgolette) , file che non esiste (suppongo a meno che tu non abbia un file chiamato "*"...)
Per inciso in questo caso il secondo parametro sarà espanso come "dir1//vecchi" (senza virgolette).
Per evitare l'errore avresti potuto fare così:
for dir in */; do mkdir -- "${dir}vecchi"; mv "${dir}"* "${dir}vecchi"; done
Nota l'asterisco _fuori_ dalle virgolette.
Bon! questa la spiegazione dell'errore.
Ed infine un'altra soluzione, anche se avrai già finito:
for dir in */; do mv "${dir}" DIRECTORY_CHE_SICURAMENTE_NON_ESISTE; mkdir -- "${dir}"; mv DIRECTORY_CHE_SICURAMENTE_NON_ESISTE "${dir}vecchi"; done
> -----Messaggio originale-----
> Da: lug-bounces a lugbs.linux.it
> [mailto:lug-bounces a lugbs.linux.it] Per conto di ollenotna2000
[snip]
> for dir in */; do mkdir -- "$dir/vecchi";mv "$dir/*"
> "$dir/vecchi"; done
>
> mi ritorna errore:
>
> mv: impossibile eseguire stat di "dir1//*": File o directory
> non esistente
>
> che sbaglio?
Maggiori informazioni sulla lista
Lug
|