linux user group brescia

immagine del castello

Archivio della mailing list

[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