Como grep todos os nomes de arquivos em folderA e (folderB inside folderA)?

0

Eu queria listar todos os nomes de arquivos em folderA e outra folderB dentro de folderA e salvá-los em um arquivo de texto. O código que usei é:

ls -1 /home/CSV_XXX/* | grep ^'/home/CSV_XXX' >/home/Lists.txt

Suponha que eu tenha uma pasta chamada CSV_XXX no diretório ' / home / CSV_XXX ' & dentro dele contém:

20161010
BDL_EXISTING_CARDS2_20161228.CSV
BDL_EXISTING_COLLATERAL_20161228.CSV
BDL_EXISTING_CUST_ADDRESS_20161228.CSV
.
.
.

' 20161010 ' é uma pasta dentro de CSV_XXX com o diretório ' / home / CSV_XXX / 20161010 ' & contém:

BDL_EXISTING_CARDS2_20161010.CSV
BDL_EXISTING_COLLATERAL_20161010.CSV
BDL_EXISTING_CUST_ADDRESS_20161010.CSV
.
.
.

No entanto, não consegui o que quero.

Durante minha primeira tentativa, consegui:

/home/CSV_XXX/BDL_EXISTING_CARDS2_20161010.CSV
/home/CSV_XXX/BDL_EXISTING_COLLATERAL_20161010.CSV
/home/CSV_XXX/BDL_EXISTING_CUST_ADDRESS_20161010.CSV
.
.
.
/home/CSV_XXX/20161010:

sem a lista do que está na pasta 20161010

Além disso, como posso remover o diretório ' / home / CSV_XXX / ' se eu mudar de ideia e removê-lo da minha lista?

apenas as listas (incluindo 20161010 ):

BDL_EXISTING_CARDS2_20161228.CSV
BDL_EXISTING_COLLATERAL_20161228.CSV
BDL_EXISTING_CUST_ADDRESS_20161228.CSV
.
.
.
    
por Juliet.Y 17.02.2017 / 04:07

2 respostas

1

Você pode estar usando melhor o comando find

por exemplo

find /home/CSV_XXX -type f -print

listará todos os arquivos em todos os diretórios recursivamente sob o diretório CSV_XXX.

Se você quiser apenas arquivos que correspondam a um padrão, faça algo como

find /home/CSV_XXX -type f -name '*.csv' -print

e isso só irá imprimir nomes de arquivos terminados em .csv

Se você quiser incluir diretórios na lista, basta pular a parte -type f .

Para remover o prefixo do diretório

( cd /home/CSV_XXX ; find * -type f -name '*.csv' -print )

    
por 17.02.2017 / 05:13
0

Por padrão, ls não é recursivo. Você precisaria adicionar o sinalizador -R para que ele caísse em subdiretórios. Você pode achar que find é um comando melhor para usar, já que ls não fornece o nome completo do caminho, enquanto find faz por padrão.

Para remover um arquivo da saída da lista, use grep -v .

As páginas man de ls , find e grep podem fornecer mais detalhes.

    
por 17.02.2017 / 04:54