et cela vous laisse toujours avec './' préfixé à chaque nom de fichier. Ce n'est pas vraiment un problème, mais je pense que c'est plutôt moche. J'y suis allé avec:
ls -p | grep -v '/$'
Et cela vous donnera une liste qui se ressemble, et vous pouvez également ajouter des lsarguments supplémentaires . Ajoutez un --color=alwayset vous récupérerez vos dircolors, ou -apour voir les fichiers cachés.
J'aime la réponse d'Alexander car il dépend en fait d'un système de fichiers caractéristique du fichier en question, de sorte qu'il ne sera jamais dupe. Ma réponse sera dupée par un fichier qui a un «/» comme dernier caractère de son nom. Mais cela semble demander des ennuis.
'-not' est lié à GNU find, car il n'est pas compatible POSIX, il est préférable de ne pas enseigner ces options car un utilisateur pourrait avoir de "mauvais" habbits et se sentir perdu sur d'autres UNIX :)
jirib
2
@JiriXichtkniha quelle est l'alternative POSIX à -not?
Cette réponse a déjà été fournie plus d'un an auparavant par jamzed, (faisant ce bruit visuel.)
Alexx Roche
2
Les solutions "trouver" ci-dessus perdent certaines des capacités de ls - par exemple: lister uniquement les fichiers, triés dans le temps de modification décroissant.
Les réponses "ls -p | grep" ne traitent pas avec élégance d'autres éléments de ls tels que -R s'ils sont souhaités
La réponse ci - dessous, alors que plus bavard, à mon avis , reflète le plus vrai ls comportement et plus de flexibilité pour sélectionner « uniquement les fichiers »
ls -t . | while read line; do
if [ -f $line ]; then
echo $line
fi
done
Remplacez simplement les commutateurs ls comme vous le souhaitez et le résultat sera retourné avec des fichiers uniquement. Si des liens et d'autres éléments sont également requis, une révision mineure devra être effectuée pour le test d'inclusion.
Avec cela, vous pouvez toujours utiliser d'autres options ls. Ou ... supprimer -vpour ne répertorier que les répertoires. Ou ... remplacez le répertoire par tout autre type de fichier qui filecomprend et signale, comme ASCII, vide, ELF, etc.
Cela ne fonctionne pas si l'un des noms de fichiers à répertorier contient des espaces.
Psychonaut
ls -t .|while read f;do [ -f "$f" ]&& echo $f;doneest environ 3 fois plus rapide dans mes tests
Alexx Roche
0
J'étais sur un système où le findbinaire ne supportait pas -notet j'ai fini par utiliser:
ls|while read f;do [ -f "$f" ]&& echo $f;done
Avantages: ne repose sur rien d'autre que sh ls echo
compatible avec bash et dash
peut être modifié pour correspondre à d'autres choses (comme les répertoires) en changeant -f
est plus rapide que certaines des réponses et utilise moins de RAM et de CPU
ls .
sans répertoires - et le voici.-ls
ou-exec ls -l {} \;
le rendrait commels -l
sans répertoires.Pour obtenir exactement l'équivalent de
ls .
vous, vous ne devez pas afficher les répertoires cachés.find . -maxdepth 1 -not -type d -and -not -name '.*'
et cela vous laisse toujours avec './' préfixé à chaque nom de fichier. Ce n'est pas vraiment un problème, mais je pense que c'est plutôt moche. J'y suis allé avec:
ls -p | grep -v '/$'
Et cela vous donnera une liste qui se ressemble, et vous pouvez également ajouter des
ls
arguments supplémentaires . Ajoutez un--color=always
et vous récupérerez vos dircolors, ou-a
pour voir les fichiers cachés.J'aime la réponse d'Alexander car il dépend en fait d'un système de fichiers caractéristique du fichier en question, de sorte qu'il ne sera jamais dupe. Ma réponse sera dupée par un fichier qui a un «/» comme dernier caractère de son nom. Mais cela semble demander des ennuis.
la source
essaye ça:
ou ca:
la source
Bien que ce soit un vieux post, mais j'ai pensé que cela pourrait aider ..
$ ls -l | grep -v ^ d
Il répertorie tous les fichiers, y compris les liens symboliques, les fichiers de caractères et les blocs.
la source
Les solutions "trouver" ci-dessus perdent certaines des capacités de ls - par exemple: lister uniquement les fichiers, triés dans le temps de modification décroissant.
Les réponses "ls -p | grep" ne traitent pas avec élégance d'autres éléments de ls tels que -R s'ils sont souhaités
La réponse ci - dessous, alors que plus bavard, à mon avis , reflète le plus vrai ls comportement et plus de flexibilité pour sélectionner « uniquement les fichiers »
Remplacez simplement les commutateurs ls comme vous le souhaitez et le résultat sera retourné avec des fichiers uniquement. Si des liens et d'autres éléments sont également requis, une révision mineure devra être effectuée pour le test d'inclusion.
la source
Avec cela, vous pouvez toujours utiliser d'autres options
ls
. Ou ... supprimer-v
pour ne répertorier que les répertoires. Ou ... remplacez le répertoire par tout autre type de fichier quifile
comprend et signale, comme ASCII, vide, ELF, etc.la source
ls -t .|while read f;do [ -f "$f" ]&& echo $f;done
est environ 3 fois plus rapide dans mes testsJ'étais sur un système où le
find
binaire ne supportait pas-not
et j'ai fini par utiliser:Avantages: ne repose sur rien d'autre que
sh ls echo
compatible avec bash et dash
peut être modifié pour correspondre à d'autres choses (comme les répertoires) en changeant
-f
est plus rapide que certaines des réponses et utilise moins de RAM et de CPU
la source