Isso é semelhante a esta pergunta , mas quero incluir o caminho relativo ao diretório atual no unix. Se eu fizer o seguinte:
ls -LR | grep .txt
Não inclui os caminhos completos. Por exemplo, eu tenho a seguinte estrutura de diretórios:
test1/file.txt
test2/file1.txt
test2/file2.txt
O código acima retornará:
file.txt
file1.txt
file2.txt
Como posso incluir os caminhos relativos ao diretório atual usando comandos padrão do Unix?
find
outree
. Estou ssh'ing em um dispositivo Android onde eu parecem ter apenasls
, e nenhuma dessas outras ferramentas: /Respostas:
Use find:
Em sistemas que usam o GNU find, como a maioria das distribuições GNU / Linux, você pode deixar de fora a impressão.
fonte
find $(pwd) -name \*.txt
-path "*docs/*.txt"
vez de-name
.-wholename
é o mesmo que-path
-type f
para retornar apenas arquivos, e não diretórios, links simbólicos etc.-name "*.txt"
vai NÃO corresponderfile.TXT
- sempre usar-iname "*.txt"
em vez que é case-insensitive.Use
tree
, com-f
(caminho completo) e-i
(sem linhas de indentação):Você pode usar
grep
para filtrar os que deseja.Se o comando não for encontrado, você pode instalá-lo:
Digite o seguinte comando para instalar o comando tree no RHEL / CentOS e Fedora linux:
Se você estiver usando Debian / Ubuntu, o Mint Linux digite o seguinte comando no seu terminal:
fonte
Tente
find
. Você pode procurar exatamente na página de manual, mas é mais ou menos assim:find [start directory] -name [what to find]
então para o seu exemplo
find . -name "*.txt"
deve dar o que você quer.
fonte
Você pode usar o find:
fonte
Isso faz o truque:
ls -R1 $PWD | while read l; do case $l in *:) d=${l%:};; "") d=;; *) echo "$d/$l";; esac; done | grep -i ".txt"
Mas faz isso "pecando" com a análise de
ls
, no entanto, que é considerada má forma pelas comunidades GNU e Ghostscript.fonte
ls
porque geralmente leva a erros. A frase em questão estava tentando chamar isso. Também tinha uma piada que eu removi.'sed' apagará 'your_path' de todos os resultados 'find'. E você recebe em relação ao caminho 'DIR'.
fonte
Para obter os nomes reais dos arquivos de caminho completo dos arquivos desejados usando o comando find, use-o com o comando pwd:
fonte
Aqui está um script Perl:
uso:
fonte
Você pode criar uma função shell, por exemplo, no seu
.zshrc
ou.bashrc
:O primeiro funcionaria apenas em arquivos únicos, obviamente.
fonte
Encontre o arquivo chamado "filename" no seu sistema de arquivos iniciando a pesquisa no diretório raiz "/". O "nome do arquivo"
fonte
Se você deseja preservar os detalhes, como ls como o tamanho do arquivo, etc, na sua saída, isso deve funcionar.
fonte
No shell do peixe , você pode fazer isso para listar todos os pdfs recursivamente, incluindo os do diretório atual:
Apenas remova 'pdf' se você quiser arquivos de qualquer tipo.
fonte
Você pode implementar essa funcionalidade como esta
Primeiramente, usando o comando ls apontado para o diretório de destino. Mais tarde, usando o comando find, filtre o resultado. Do seu caso, parece que - sempre o nome do arquivo começa com uma palavra
file***.txt
fonte
No mycase, com comando em árvore
Caminho relativo
Caminho absoluto
fonte