J'ai supprimé un répertoire à un moment donné qui contient une foule de liens pointant vers son contenu. Je voulais utiliser un unix foreach pour supprimer les liens maintenant morts du répertoire sans ding autres fichiers / liens, mais quand je fais un
pour chaque cat thelist
foreach rompt toutes les lignes sur les espaces, ce qui est autorisé dans ce cas dans les noms de fichiers.
Est-ce que quelqu'un connaît un moyen de prendre la ligne entière intacte comme nom de fichier dans le corps foreach?
Voici la situation ...
nom de fichier a des espaces - & gt; down / this / path / filename a des espaces
Qui produit ce comportement: pour chaque ... nom de fichier introuvable n'a pas trouvé espaces non trouvés
J'ai essayé toutes sortes de combos "" et {}, mais aucun ne semble remplacer le comportement foreach. Merci. Harley
la source
foreach
? Les coquilles standard utilisentfor
. Si vous utilisezfind
avec-lname
localiser les liens morts, puisxargs
C'est très facile pour gérer les noms de fichiers difficiles:find {SearchDirectory} {SearchCriteria} -print0|xargs -0 rm
. Dans ce cas\0
est utilisé à la place des espaces pour séparer les noms de fichiers, ce qui permet de conserver les espaces dans leurs noms.foreach
...est-ce CSH vous essayez de script avec? À moins que vous n'ayez pas d'autre choix, le conseil général est le suivant: ne pas : - \"${file}"