Quero uma lista simples de arquivos em um diretório que não seja meu diretório atual. Eu corro ls /other/directory/*.txt
e recebo:
/other/directory/file1.txt /other/directory/file2.txt
Eu quero:
file1.txt file2.txt
Como posso obter a segunda lista?
*.txt
fazia diferença. Eu atualizei a pergunta.Respostas:
(cd /other/directory && ls)
fonte
Existe alguma razão pela qual você não pode usar
ls -1
?EDITAR:
Percebo que você mudou a pergunta agora - minha solução não funcionará com seu novo exemplo de
ls /other/directory/*.txt
. Use algo como a solução khachik , por exemplo, por exemplofonte
1) Não tenho certeza se isso não deve estar no superuser.com2) ls não imprime o caminho completo de qualquer maneira:ls -1 /your/dir
Editar A pergunta mudou. Pelo comentário de Paulo abaixo, estou atualizando minha resposta. Você pode fazer assim:
Isso é menos 1, não l, embora eu trabalhe também. Explicação: ls -l / -1 grava os nomes dos arquivos com as coisas que você não deseja. Cada linha é canalizada através do sed, que aqui está fazendo uma substituição, conforme especificado pelo s /. Uma substituição assume a forma:
Estamos substituindo tudo, desde o início da linha
^
até a última/
(/
é um caractere especial, por isso temos que escapar\\/
) por nada - ou seja, removendo-o e deixando assim apenas o nome do arquivo.fonte
1
el
) #ls -1 /other/directory/*.txt |xargs basename
-1
listará um arquivo por linha com apenas o nome do arquivo (ou caminho)ls
um caminho completo produzirá o caminho absoluto completo para cada arquivo.basename
irá remover o caminho, deixando apenas o nome do arquivo.fonte
xargs -n1 basename
A expressão em `` é expandida para os arquivos, então cada um deles é passado para o nome da base. Advertência: Não funciona com arquivos que contêm espaços em branco!
fonte