Esto es similar a esta pregunta , pero quiero incluir la ruta relativa al directorio actual en Unix. Si hago lo siguiente:
ls -LR | grep .txt
No incluye los caminos completos. Por ejemplo, tengo la siguiente estructura de directorios:
test1/file.txt
test2/file1.txt
test2/file2.txt
El código anterior devolverá:
file.txt
file1.txt
file2.txt
¿Cómo puedo hacer que incluya las rutas relativas al directorio actual usando los comandos estándar de Unix?
find
otree
. Me estoy metiendo en un dispositivo Android donde parece que solo tengols
, y ninguna de estas otras herramientas: /Respuestas:
Use buscar:
En los sistemas que usan GNU find, como la mayoría de las distribuciones de GNU / Linux, puede omitir la impresión.
fuente
find $(pwd) -name \*.txt
-path "*docs/*.txt"
lugar de-name
.-wholename
es lo mismo que-path
-type f
solo para devolver archivos y no directorios, enlaces simbólicos, etc.-name "*.txt"
se NO coincidirfile.TXT
- utilizar siempre-iname "*.txt"
en su lugar, que es sensible a las mayúsculas.Uso
tree
, con-f
(ruta completa) y-i
(sin líneas de sangría):Luego puede usar
grep
para filtrar los que desee.Si no se encuentra el comando, puede instalarlo:
Escriba el siguiente comando para instalar el comando de árbol en RHEL / CentOS y Fedora Linux:
Si está utilizando Debian / Ubuntu, Mint Linux escriba el siguiente comando en su terminal:
fuente
Tratar
find
. Puede buscarlo exactamente en la página de manual, pero es así:find [start directory] -name [what to find]
entonces para tu ejemplo
find . -name "*.txt"
debería darte lo que quieres.
fuente
Puedes usar find en su lugar:
fuente
Eso hace el truco:
ls -R1 $PWD | while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done | grep -i ".txt"
Pero lo hace al "pecar" con el análisis de
ls
, sin embargo, lo que las comunidades GNU y Ghostscript consideran una mala forma.fuente
ls
porque generalmente genera errores. La oración en cuestión estaba tratando de decir eso. También tenía una broma que eliminé.'sed' borrará 'your_path' de todos los resultados 'find'. Y recibes en relación con la ruta 'DIR'.
fuente
Para obtener los nombres de archivo de ruta completa de los archivos deseados utilizando el comando find, úselo con el comando pwd:
fuente
Aquí hay un script de Perl:
uso:
fuente
Puede crear una función de shell, por ejemplo, en su
.zshrc
o.bashrc
:El primero solo funcionaría en archivos individuales, obviamente.
fuente
Busque el archivo llamado "nombre de archivo" en su sistema de archivos comenzando la búsqueda desde el directorio raíz "/". El "nombre de archivo"
fuente
Si desea preservar los detalles, incluya ls como tamaño de archivo, etc. en su salida, entonces esto debería funcionar.
fuente
En el shell de peces , puede hacer esto para enumerar todos los archivos PDF de forma recursiva, incluidos los del directorio actual:
Simplemente elimine 'pdf' si desea archivos de cualquier tipo.
fuente
Puede implementar esta funcionalidad como esta
Primero, usando el comando ls apuntado al directorio de destino. Más tarde, usando el comando find, filtra el resultado de él. Desde su caso, parece que siempre el nombre del archivo comienza con una palabra
file***.txt
fuente
En mycase, con comando de árbol
Camino relativo
Camino absoluto
fuente