Come posso spostare solo i file semplici (non le directory) da una cartella in Linux in un'altra cartella usando il mv
comando?
Ho provato mv * ~/
, ma ha copiato tutto, comprese le directory.
Come posso spostare solo i file semplici (non le directory) da una cartella in Linux in un'altra cartella usando il mv
comando?
Ho provato mv * ~/
, ma ha copiato tutto, comprese le directory.
Risposte:
Puoi provare
find . -maxdepth 1 -type f -exec mv {} destination_path \;
-exec
Sono un tipo "usa un martello per tutto" quindi uso programmi bourne shell per cose che altri usano programmi esterni per ...
for file in * .*
do
test -f "$file" && mv "$file" "$HOME"/
done
Ad alcune persone piace fare le cose nel minor numero possibile di battute a macchina, ma sono una dattilografa piuttosto veloce e ho cose come questa integrate nel mio cervello, quindi non è un gran dolore fare questo invece di cercare l'esatto argomenti per trovare ed eseguire e tutto il resto.
YMMV, sebbene ...
@Mereghost è molto vicino. Ecco cosa riesco a spostare tutti i file (inclusi i file nascosti), ma non le directory:
find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;
L' .
individuazione successiva presuppone che la directory corrente sia l'origine dei file che si desidera spostare. In caso contrario, il comando può essere modificato come segue:
find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;
Se vuoi spostare solo file normali e non file nascosti:
find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;
Se vuoi spostare solo file nascosti e non file normali:
find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
puoi usare find
find * -maxdepth 1 -type f -exec mv {} ~ \;
mv `find ./sourcedir/* -type f` ./destdir
find
's -exec
opzione è il modo migliore per evitare il problema.