find command retorna o diretório de trabalho atual como primeiro resultado

1

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
    
por Faisal M 11.09.2016 / 13:35

1 resposta

1

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
    
por 11.09.2016 / 14:21