Defina a opção -mindepth
como 1
ou seja, -mindepth 1
para excluir o diretório atual ( .
) da saída de find
:
find . -maxdepth 1 -mindepth 1 -type d
Estou usando find
em vários diretórios que contêm os mesmos nomes de arquivos, mas conteúdos diferentes. Então, eu estou copiando-os para um diretório com nomes de arquivos numéricos.
O problema que enfrentei foi que o comando find
lê as pastas em ordem diferente do comando ls
. Tornando difícil correlacionar os novos arquivos aos seus diretórios originais.
Minha solução foi executar o mesmo comando find
nos diretórios originais para obtê-los na mesma ordem e numerá-los de acordo.
#!/bin/sh
find . -maxdepth 1 -type d | sed 's#./##' > rename.list
j=1
while read -r line
do
mv ./"$line" ./"$j"_"$line"
j=$(( $j + 1))
done < rename.list
Isso quase resolveu o problema, mas o comando find
por algum motivo lista o diretório de trabalho atual como a primeira saída que compensa a numeração em 1.
$ find . -maxdepth 1 -type d | sed 's#./##'
.
dir2
dir1
dir3
embora, os primeiros comandos find
que eu executei não tenham o mesmo problema:
find . -wholename "*__substg1.0_007D001E*" -wholename "*attach_version*" -type d > header_files.txt