8
votes

Comment puis-je obtenir le nom du dernier fichier via le terminal?

J'essaie de créer une macro pour Maestro de clavier pour OS X Faire ce qui suit:

  • Obtenez le nom du fichier le plus récent dans un répertoire sur mon disque basé sur la date créée; li>
  • Coller le texte "Dernier fichier:" Plus le nom du dernier fichier. Li> ol>

    Une de ses options consiste à "exécuter un script shell", donc je pensais que cela le ferait pour 1. Après avoir googler un peu, je suis venu avec ceci: p>

    cd /path/to/directory/
    ls -t | head -n1

  • 1 commentaires

    Pour obtenir le texte aléatoire, vous pouvez faire quelque chose comme: tête -c 12 / dev / urandom | base64 . Oh, attends, tu veux dire texte arbitraire . Désolé, j'ai été confus.


    5 Réponses :


    4
    votes
    cd /path/to/directory/
    echo -n "random text goes here" $(ls -t | head -n1)
    If you want, you can add more text on the end in the same way.

    1 commentaires

    Merci! Cela avait toujours le retour pour une raison quelconque de l'application, même si la -n ne l'a pas montré dans le terminal lui-même. Mais l'écho suivi d'une commande sera utile pour d'autres choses aussi :)



    11
    votes

    Étant donné que vous utilisez déjà des tuyaux, jetez-en un autre à un autre:

    ls -t | awk '{printf("newest file: %s",$0);exit}'
    


    2 commentaires

    Pourquoi utiliser tête -n1 du tout lorsque vous pouvez simplement Quitter de Awk après la première ligne?


    Merci. Comment puis-je l'enregistrer dans une variable au lieu de l'imprimer?



    -1
    votes

    Vous ne pouvez pas le faire avec seulement ls code>. Cependant, comme echo code> est généralement intégré dans la coque, il n'ajoute pas vraiment de surcharge dans le script. Pour obtenir juste le nom du fichier, je suggérerais:

    ls -t1 | ( read n; echo -n "newest: $n")
    


    1 commentaires

    Ainsi, quelqu'un a baissé cela (et d'autres réponses) sur 7 ans plus tard. J'aimerais souligner que cette réponse a été publiée principalement pour répondre à la question précise "Puis-je ne faire que s'il utilise la commande ls " (la réponse acceptée à l'aide de awk , à laquelle j'ai contribué une suggestion, a déjà été posté). Ce n'est pas de ma faute si cela ne répond pas à une autre question, même si la question s'inscrit dans les résultats de la recherche.



    2
    votes

    Vous pouvez le faire dans BASH dans une seule déclaration comme si:

    echo -n "newest file: $(find . -maxdepth 1 -type f -print0 |xargs -0 ls -t)"
    


    0 commentaires

    4
    votes

    Utilisation de la sortie de LS est une mauvaise pratique.

    trouver -type f -printf '% t +% p \ n' | TRY -R | tête-n-n ° 1


    0 commentaires