J'ai quelques dossiers avec du \n
caractère dans leurs noms.
par exemple:
$ ls
''$'\n''Test'
Cela fait référence à un dossier avec le nom du test et une ligne vide devant son nom.
Donc, quand je lance des scripts comme celui-ci, dans son répertoire parent:
while IFS= read -r d; do
rmdir $d
done < <(find * -type d)
Ça montre:
rmdir: failed to remove '': No such file or directory
rmdir: failed to remove 'Test': No such file or directory
Parce qu'il s'exécute deux fois, une fois \n
et l'autre Test
, car le nom du dossier a deux lignes.
Alors, comment puis-je résoudre ce problème de telle sorte que le script sache qu'il ne \nTest
s'agit que d'un dossier?
find * -type d -print0 | while IFS= read -d '' file ; do rmdir $file ; done
commande a cette sortie rmdir: failed to remove 'Test': No such file or directory
.
rmdir "$file"
-print0
directive find et l'-d
option read. Voir stackoverflow.com/a/40189667/7552