2013-01-03 2 views
0

Commande Linux: j'utilise la commande suivante qui renvoie le dernier nom de fichier dans le répertoire.Commande Linux Fichier de liaison non-logiciel le plus récent

ls -Art | tail -n 1 

Quand je lance cette commande, il me retourne le dernier fichier a été modifié qui est en fait le lien doux, je veut ignorer le lien mou dans mon résultat, et veut obtenir les noms de fichier autre lien, puis doux comment puis-je faire tout aide rapide appréciée.

Peut être puis-je spécifier le nom du fichier de fichier dernière correspondance regex est

rum-12.53.2.war 

Répondre

0

- Dernier fichier dans le répertoire sans lien symbolique

ls -ArtL | tail -n 1 

- fichier sans extension Dernières

ls -ArtL | sed 's/\(.*\)\..*/\1/' | tail -n 1 
0

L'option -L pour ls ne déréférencer le lien, à savoir vous verrez les informations de la référence au lieu du lien. c'est ce que tu veux? Ou aimeriez-vous complètement ignorer les liens?

Si vous voulez ignorer les liens complètement, vous pouvez utiliser cette solution, même si je suis sûr qu'il existe un plus facile:

a=$(ls -Artl | grep -v "^l" | tail -1) 

aa=() 
for i in $(echo $a | tr " " "\n") 
do 
    aa+=($i) 
done 

aa_length=${#aa[@]} 

echo ${aa[aa_length-1]} 

D'abord, vous stocker la sortie de vos ls dans une variable appelée. En tapant "^ l", vous choisissez uniquement des liens symboliques et avec l'option -v vous inversez cette sélection. Donc, vous avez essentiellement ce que vous voulez, seul inconvénient est que vous devez utiliser l'option -l pour ls, car sinon il n'y a pas de grepping pour "^ l". Donc, dans la deuxième partie, vous divisez la variable a par "" et remplissez un tableau appelé aa (désolé pour le mauvais nom). Ensuite, vous n'avez besoin que du dernier élément de aa, qui devrait être le nom de fichier.

+0

je veut ignorer complètement les liens –

Questions connexes