É um bug que, quando recebo find ./path/here/
:
./path/here//foo
./path/here//bar
Eu sei find
que quer que eu especifique o caminho sem a barra final, mas certamente ele pode detectar o caminho que o preenchimento da guia me deixa e ajustar sua saída de acordo. Existe alguma razão pela qual isso não acontece?
Responder1
Tecnicamente, é um bug, porqueEstados POSIXque
todos os nomes de caminho para outros arquivos encontrados na hierarquia devem consistir na concatenação do operando do caminho atual, uma <barra>se o operando do caminho atual não terminasse em ume o nome do arquivo relativo ao operando do caminho
Masa barra dupla não faz diferença, então ./path/here//foo
e ./path/here/foo
são sempre o mesmo arquivo. (Uma barra dupla faz diferença se estiver no início do caminho em algumas variantes do Unix. Se a sua fizer isso, esperamos que find
trate esse caso de maneira especial.)
Responder2
Para constar, um motivo pelo qual alguém pode usar find some/dir/
em vez de find some/dir
é quando some/dir
é na verdade um link simbólico para um diretório e você deseja find
encontrar arquivos no diretório apontado por esse link simbólico.
Mas, nesse caso, há uma alternativa melhor:
find -H some/dir
-H
é uma opção suportada por alguns utilitários POSIX ( ls
, cp
, chmod
...) que diz ao utilitário para seguir links simbólicos passados como argumentos (e apenas esses, não devem ser confundidos com -L
/ -follow
que faz com que find
sigamtodolink simbólico, aqueles passados como argumentos, mas também aqueles encontrados durante a passagem do diretório).
Isso ainda não é funcionalmente equivalente ao find some/dir/
caso em que some/dir
na verdade não é um diretório. Nesse caso, find some/dir/
falharia com umNão é um diretórioerro ao find -H some/dir
listar esse arquivo que não é de diretório.