43 votes

Comment lister les fichiers dans le répertoire en utilisant bash?

Comment copier uniquement les fichiers normaux d'un répertoire (en ignorant les sous-répertoires et les liens) vers la même destination ? (bash sur Linux) Un très grand nombre de fichiers

67voto

Mu Qiao Points 3199
for file in /source/directory/*
do
    if [[ -f $file ]]; then
        #copy stuff ....
    fi
done

28voto

poplitea Points 2162

Pour lister les fichiers normaux dans /my/sourcedir/ , sans chercher récursivement dans les sous-répertoires :

 find /my/sourcedir/ -type f -maxdepth 1

Pour copier ces fichiers dans /my/destination/ :

 find /my/sourcedir/ -type f -maxdepth 1 -exec cp {} /my/destination/ \;

9voto

glenn jackman Points 69748

Pour développer la réponse de poplitea , vous n'avez pas besoin d'exécuter cp pour chaque fichier : utilisez xargs pour copier plusieurs fichiers à la fois :

 find /my/sourcedir -maxdepth 1 -type f -print0 | xargs -0 cp -t /my/destination

ou

 find /my/sourcedir -maxdepth 1 -type f -exec cp -t /my/destination '{}' +

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X