Nécessité de supprimer un grand nombre de liens brisés - foreach échoue dans les espaces


0

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


Quelle langue utilisez-vous qui contient foreach? Les coquilles standard utilisent for. Si vous utilisez find avec -lname localiser les liens morts, puis xargs 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.
AFH

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 : - \
ckujau

comme indiqué, veuillez indiquer le shell que vous utilisez (par exemple, bash, ksh, csh, fish) et la syntaxe de la commande. l'espace peut être protégé en utilisant quote arroud var: "${file}"
Archemar
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.