Se o que você está tentando fazer não é muito complexo, você pode fazer isso com o sed:
find diskimg | sed -n 's|^diskimg/||p'
Ou cut
:
find diskimg | cut -sd / -f 2-
Gostaria de usar find
para listar todos os arquivos e diretórios recursivamente em uma determinada raiz para uma operação cpio
. No entanto, não quero que o próprio diretório raiz apareça nos caminhos. Por exemplo, atualmente recebo:
$ find diskimg
diskimg
diskimg/file1
diskimg/dir1
diskimg/dir1/file2
Mas gostaria de obter
file1
dir1
dir1/file2
(note que o root também não está na saída desejada, mas é fácil se livrar de tail
).
Estou no OS X, e prefiro não instalar ferramentas extras (por exemplo, GNU find), se possível, já que gostaria de compartilhar o script que estou escrevendo com outros usuários do OS X.
Estou ciente de que isso pode ser feito com cut
para cortar a listagem raiz, mas isso parece ser uma solução abaixo do ideal. Existe uma solução melhor disponível?
cd
no diretório primeiro:
cd diskimg && find .
Após a conclusão, você estará de volta ao diretório raiz.
Seus arquivos serão prefixados com ./ neste caso; a única maneira que vejo por aí seria usar cut
:
{ cd diskimg && find .; } | tail -n +2 | cut -c 3-
Use um subshell para evitar a mudança do diretório atual do seu shell (isto não é necessário se você estiver colocando a saída como o lado esquerdo de um pipe já executado em um subshell).
(cd diskimg && find .)
Outra, mais complexa, mas usando apenas a abordagem find da minha outra resposta:
find diskimg -mindepth 1 -printf '%P\n'
Tags find