Comparer des nom de fichiers
steffy74
Messages postés
25
Statut
Membre
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
Bonjour,
Je debute en shell et je tourne en rond... En fait je dois parcourir un repertoire et quand je trouve un fichier il faut que je verifie s'il est à traiter si oui, je le deplace dans un autre répertoire.
Donc ce que je fais :
for i in `find . -type f `
do
echo $i
nom_file=$(echo $i | awk 'BEGIN{FS="/"} {print $3}')
done
Pour l'instant je récupère donc les noms de fichier avec les extensions. J'aimerais ne plus avoir l'extension (je n'arrive pas à utiliser basename) et surtout pouvoir comparer ce nom à une liste
liste='fich1 fich2 fich3'
ex : si nom_file in $liste alors je le deplace
mais la je pateauge.D'une part je ne sait pas s'il vaut mieux creer ma liste de réference en passant par un tableau ou par une chaine de caracteres.
j'ai essayé : grep $nom_file $liste mais ce ne me rend rien !
Je ne suis peut être pas très claire mais si quelqu'un a à peu près compris mon problème....
Merci pour votre aide
Je debute en shell et je tourne en rond... En fait je dois parcourir un repertoire et quand je trouve un fichier il faut que je verifie s'il est à traiter si oui, je le deplace dans un autre répertoire.
Donc ce que je fais :
for i in `find . -type f `
do
echo $i
nom_file=$(echo $i | awk 'BEGIN{FS="/"} {print $3}')
done
Pour l'instant je récupère donc les noms de fichier avec les extensions. J'aimerais ne plus avoir l'extension (je n'arrive pas à utiliser basename) et surtout pouvoir comparer ce nom à une liste
liste='fich1 fich2 fich3'
ex : si nom_file in $liste alors je le deplace
mais la je pateauge.D'une part je ne sait pas s'il vaut mieux creer ma liste de réference en passant par un tableau ou par une chaine de caracteres.
j'ai essayé : grep $nom_file $liste mais ce ne me rend rien !
Je ne suis peut être pas très claire mais si quelqu'un a à peu près compris mon problème....
Merci pour votre aide
A voir également:
- Comparer des nom de fichiers
- Renommer des fichiers en masse - Guide
- Explorateur de fichiers - Guide
- Fichiers epub - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
- Wetransfer gratuit fichiers lourd - Guide
4 réponses
Bonjour,
Tu peux faire :
for i in `find . -type f `
do
echo $i
nom_file=$(echo $i | awk 'BEGIN{FS="/"} {print $3}')
nom_file_t=$(echo ${nom_file} | cut -d"." -f2) -> "." est le séparateur
for e in $(echo $list_comparer)
do
if [ ${nom_file_t} = ${i} ]
then
mv $nom_file_t $chemin_choisi
fi
done
done
a++
Tu peux faire :
for i in `find . -type f `
do
echo $i
nom_file=$(echo $i | awk 'BEGIN{FS="/"} {print $3}')
nom_file_t=$(echo ${nom_file} | cut -d"." -f2) -> "." est le séparateur
for e in $(echo $list_comparer)
do
if [ ${nom_file_t} = ${i} ]
then
mv $nom_file_t $chemin_choisi
fi
done
done
a++
Salut,
Une autre façon de faire :
;-))
Une autre façon de faire :
[tmpfs]$ liste="fich1 fich2 fich3"
[tmpfs]$ tree
.
|-- NameCleaner.sh
|-- affiche_2008.pdf
|-- foo.sh
|-- foo.sh~
|-- image.jpeg
`-- rep
|-- fich1.txt
|-- fich2.txt
|-- fich3.txt
|-- fich4.txt
`-- fich5.txt
1 directory, 10 files
[tmpfs]$ for fic in $liste;do find . -type f -name "${fic}*" -exec echo "cp {} /new/rep/" \; ;done
cp ./rep/fich1.txt /new/rep/
cp ./rep/fich2.txt /new/rep/
cp ./rep/fich3.txt /new/rep/
[tmpfs]$Si ça fait ce que tu veux, enlève la commande "echo" et les guillemets. Penses à créer le "/new/rep/" avant aussi...
;-))