Yop
Je cherche à faire un script qui parcours un répertoire en prenant en compte aussi bien les fichiers contenants des espaces ainsi que ceux commençant par un point.
La syntaxe de ce script serait la suivante : monscript <source_a_parcourir>
Donnant ainsi :
----
Soit un dossier source à parcourir :
Quote:
$ tree -a Source/
Source/
|-- dossier avec espaces
| |-- .hidden
| |-- fichier avec espaces
| `-- fichier_sans_espace
`-- dossier_sans_espace
|-- .hidden
|-- fichier avec espaces
`-- fichier_sans_espace
2 directories, 6 files
|
Pour chacun de ces fichiers, je veux donc pouvoir préciser des actions en fonction du type, de la date, etc. Bref, une liste d'instructions.
J'ai trouvé la commande "find" munie de son option "-exec" qui permet d'exécuter une commande en connaissant le fichier parcouru. Ok, mais elle ne m'aide pas, je n'ai pas trouvé moyen de lui préciser une suite d'instruction bash sans avoir mon script en deux fichiers.
Ensuite, j'ai trouvé le parcours des résultats de find, avec un for :
Code:
$ for i in $(find Source/); do echo "-> $i"; done;
Seulement le résultat laisse à désirer... Il sépare bien les fichiers mais aussi quand il y a des espaces
Quote:
-> Source/
-> Source/dossier
-> avec
-> espaces
-> Source/dossier
-> avec
-> espaces/fichier_sans_espace
-> Source/dossier
-> avec
-> espaces/fichier
-> avec
-> espaces
-> Source/dossier
-> avec
-> espaces/.hidden
-> Source/dossier_sans_espace
-> Source/dossier_sans_espace/fichier_sans_espace
-> Source/dossier_sans_espace/fichier
-> avec
-> espaces
-> Source/dossier_sans_espace/.hidden
|
En continuant de chercher, j'obtiens le code suivant :
Code:
$ for i in Source/*; do echo "-> $i"; done;
Mais ce n'est ni récursif (à moins d'imbriquer des for ?) et il me faudra faire en double pour les fichiers cachés (commençant par un point).
Quote:
-> Source/dossier avec espaces
-> Source/dossier_sans_espace
|
Quelqu'un aurait une idée ?
Je pensais à convertir les espaces par un motif, à la sortie du find, mais si un de mes fichiers vient à contenir le motif, c'est fichu...
La manière dont le "*" ne cause pas problème pour les espaces tandis qu'avec le "find", ça foire, ça m'épate !