Listar directoties um nível abaixo, excluindo alguns diretórios e arquivos nomeados

1

Eu quero enviar uma lista de todas as pastas, incluindo um nível até um arquivo txt. Excluindo algumas pastas nomeadas e sem arquivos. Imagine uma estrutura de pastas como essa. CAPS são pastas.

FOLDER 1

.hidden

TEMP

somefile

=========

=========

FOLDER 2

.hidden

TEMP

DATA1

DATA2

somefile

========

========

FOLDER 3

.hidden

TEMP

DATA1

somefile

Eu gostaria de executar o comando "inserir mágica aqui" e terminar com uma saída semelhante a

FOLDER 1

FOLDER 2

DATA1

DATA2

FOLDER 3

DATA1
    
por GTM 12.10.2015 / 00:01

2 respostas

0

Eu fiz isso para criar sua estrutura de pastas:

for     f in    FOLDER\ 1 FOLDER\ 2 FOLDER\ 3
do      mkdir   -p "$f/TEMP"
        touch   "$f/.hidden" "$f/somefile"
        case    "$f" in
        (*2)    mkdir -p    "$f/DATA1/TEMP" "$f/DATA2/TEMP";;
        (*3)    mkdir -p    "$f/DATA1/TEMP"
        esac
done

Isso criou uma árvore como:

find .
.
./FOLDER 1
./FOLDER 1/TEMP
./FOLDER 1/.hidden
./FOLDER 1/somefile
./FOLDER 2
./FOLDER 2/TEMP
./FOLDER 2/.hidden
./FOLDER 2/somefile
./FOLDER 2/DATA1
./FOLDER 2/DATA1/TEMP
./FOLDER 2/DATA2
./FOLDER 2/DATA2/TEMP
./FOLDER 3
./FOLDER 3/TEMP
./FOLDER 3/.hidden
./FOLDER 3/somefile
./FOLDER 3/DATA1
./FOLDER 3/DATA1/TEMP

E por último eu fiz ...

find . ! -path './*/*/*' ! -name TEMP -type d
.
./FOLDER 1
./FOLDER 2
./FOLDER 2/DATA1
./FOLDER 2/DATA2
./FOLDER 3
./FOLDER 3/DATA1
    
por 12.10.2015 / 03:37
0

Obrigado que funcionou bem, eu esqueci que o .hidden também era uma pasta, então adicionei isso no comando find. Find estava exibindo as pastas na ordem em que foram adicionadas, então usou o comando sort para classificar em ordem alfabética. Então acabei com

find . ! -path './*/*/*' ! -name TEMP ! -name .hidden -type d | sort > folderlist.txt

Limpou o resultado um pouco com

sed -n -e 's;^.*/;;p'

Por isso, lista como

PASTA 1

PASTA 2

DATA1

DATA2

PASTA 3

DATA1

Finalmente acabamos com essa fera de uma linha

find . ! -path './*/*/*' ! -name TEMP ! -name .hidden -type d | sort | sed -n -e 's;^.*/;;p' > folderlist.txt

Pode ser confuso, mas eu não sou especialista. Obrigado por toda a ajuda.

    
por 12.10.2015 / 14:00