Comment puis-je déplacer uniquement les fichiers simples (pas les répertoires) d'un dossier sous Linux vers un autre dossier à l'aide de la mv
commande?
J'ai essayé mv * ~/
, mais il a tout copié, y compris les répertoires.
Comment puis-je déplacer uniquement les fichiers simples (pas les répertoires) d'un dossier sous Linux vers un autre dossier à l'aide de la mv
commande?
J'ai essayé mv * ~/
, mais il a tout copié, y compris les répertoires.
Réponses:
Tu peux essayer
find . -maxdepth 1 -type f -exec mv {} destination_path \;
-exec
Je suis un gars "utilisez un marteau pour tout" donc j'utilise des programmes shell bourne pour des trucs d'autres utilisent des programmes externes pour ...
for file in * .*
do
test -f "$file" && mv "$file" "$HOME"/
done
Certaines personnes aiment faire les choses en tapant le moins possible mais je suis une dactylo assez rapide et j'ai des trucs comme ça intégrés dans mon cerveau donc ce n'est pas trop pénible de le faire au lieu de chercher l'exact arguments pour trouver et exécuter et tout ça.
YMMV, cependant ...
@Mereghost est très proche. Voici ce que j'obtiens pour déplacer tous les fichiers (y compris les fichiers cachés), mais pas les répertoires:
find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;
La .
recherche après suppose que votre répertoire actuel est la source des fichiers que vous souhaitez déplacer. Sinon, la commande peut être révisée comme suit:
find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;
Si vous souhaitez déplacer uniquement les fichiers normaux et non les fichiers masqués:
find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;
Si vous souhaitez déplacer uniquement les fichiers cachés et non les fichiers normaux:
find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
Si vous n'avez aucun dossier avec un nom avec un point, vous pouvez les déplacer simplement:
mv . ~ / dossier de destination
(Mon hypothèse est que tous vos fichiers sont quelque chose.quelque chose (dans mon cas, tous le sont généralement))
MAIS grâce à d'autres réponses - très utiles. THX
vous pouvez utiliser find
find * -maxdepth 1 -type f -exec mv {} ~ \;
mv `find ./sourcedir/* -type f` ./destdir
find
l' -exec
option est la meilleure façon d'éviter le problème.