C'est similaire à cette question , mais je veux inclure le chemin d'accès par rapport au répertoire courant sous unix. Si je fais ce qui suit:
ls -LR | grep .txt
Il n'inclut pas les chemins d'accès complets. Par exemple, j'ai la structure de répertoires suivante:
test1/file.txt
test2/file1.txt
test2/file2.txt
Le code ci-dessus renverra:
file.txt
file1.txt
file2.txt
Comment puis-je le faire inclure les chemins relatifs au répertoire courant en utilisant les commandes Unix standard?
find
outree
. Je ssh'ing dans un appareil Android où je semble avoir seulementls
, et aucun de ces autres outils: /Réponses:
Utilisez find:
Sur les systèmes qui utilisent GNU find, comme la plupart des distributions GNU / Linux, vous pouvez omettre l'impression.
la source
find $(pwd) -name \*.txt
-path "*docs/*.txt"
place de-name
.-wholename
est le même que-path
-type f
pour renvoyer uniquement des fichiers et non des répertoires, des liens symboliques, etc.-name "*.txt"
ne pas correspondrefile.TXT
- toujours utiliser au-iname "*.txt"
lieu qui est insensible à la casse.Utilisez
tree
, avec-f
(chemin complet) et-i
(pas de lignes de retrait):Vous pouvez ensuite utiliser
grep
pour filtrer ceux que vous souhaitez.Si la commande n'est pas trouvée, vous pouvez l'installer:
Tapez la commande suivante pour installer la commande d'arborescence sur RHEL / CentOS et Fedora linux:
Si vous utilisez Debian / Ubuntu, tapez la commande Mint Linux suivante dans votre terminal:
la source
Essayez
find
. Vous pouvez le rechercher exactement dans la page de manuel, mais c'est comme ceci:find [start directory] -name [what to find]
donc pour votre exemple
find . -name "*.txt"
devrait vous donner ce que vous voulez.
la source
Vous pouvez utiliser find à la place:
la source
Cela fait l'affaire:
ls -R1 $PWD | while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done | grep -i ".txt"
Mais il le fait en "péchant" avec l'analyse de
ls
, ce qui est considéré comme une mauvaise forme par les communautés GNU et Ghostscript.la source
ls
car cela conduit généralement à des bugs. La phrase en question essayait de le rappeler. Il y avait aussi une blague que j'ai retirée.'sed' effacera 'your_path' de tous les résultats 'find'. Et vous recevez par rapport au chemin «DIR».
la source
Pour obtenir les noms de fichier de chemin complet réels des fichiers souhaités à l'aide de la commande find, utilisez-le avec la commande pwd:
la source
Voici un script Perl:
usage:
la source
Vous pouvez créer une fonction shell, par exemple dans votre
.zshrc
ou.bashrc
:Évidemment, le premier ne fonctionnerait que sur des fichiers uniques.
la source
Trouvez le fichier appelé "nom de fichier" sur votre système de fichiers en commençant la recherche à partir du répertoire racine "/". Le "nom de fichier"
la source
Si vous souhaitez conserver les détails fournis avec ls comme la taille du fichier, etc. dans votre sortie, cela devrait fonctionner.
la source
Dans le shell de poissons , vous pouvez faire cela pour lister tous les fichiers PDF de manière récursive, y compris ceux du répertoire courant:
Supprimez simplement 'pdf' si vous voulez des fichiers de tout type.
la source
Vous pouvez implémenter cette fonctionnalité comme ceci
Premièrement, en utilisant la commande ls pointant vers le répertoire cible. Plus tard, en utilisant la commande find, filtrez le résultat. D'après votre cas, cela ressemble à - toujours le nom de fichier commence par un mot
file***.txt
la source
Dans mycase, avec la commande tree
Chemin relatif
Chemin absolu
la source