La question concerne l'écriture de scripts shell dans bash
.
Comment vérifier avec un script quels fichiers du répertoire courant sont des liens logiciels?
Dans le cas où j'ai utilisé le mauvais terme, quand je dis des liens logiciels, je fais référence aux fichiers créés à l'aide ln -s
.
La seule chose à laquelle j'ai réussi à penser est d'évaluer ls -la
en tant qu'expression et d'analyser ses résultats, mais ce n'est évidemment pas la meilleure solution.
bash
symbolic-link
ls
shell-script
ln
bguiz
la source
la source
Réponses:
Voir «EXPRESSIONS CONDITIONNELLES» dans
man bash
- dans ce cas, vous voulez-h
:la source
test -h
c'est ce que je voulais!Vous n'avez peut-être pas vraiment besoin d'un script. Pour afficher les liens symboliques dans le dossier en cours uniquement, sans recurseur dans un dossier enfant:
Ou, pour obtenir plus d'informations, utilisez l'une des méthodes suivantes:
Pour savoir si un fichier est un lien symbolique, on peut utiliser
readlink
, qui ne sortira rien s'il ne s'agit pas d'un lien symbolique. L'exemple suivant n'est pas très utile, mais montre commentreadlink
ignore les fichiers et dossiers normaux. Utilisez l'un des:Notez que ce qui précède
-exec ... +
etxargs ...
sont beaucoup plus rapides que-exec ... \;
. Comme:la source
xargs
c'est beaucoup plus rapide sur mon Mac; voir mon montage. Mais j'ai appris quelque chose de nouveau aujourd'hui: il y a aussi+
au lieu de\;
(même si certains prétendent que cela a / a eu des problèmes avecgrep
.)