Usando apenas os recursos disponíveis no AIX ou em outros sistemas POSIX e quase nenhum:
find /usr/something/* /usr/something/.[!.]* /usr/something/..?* \
-prune -type f -user antoine -exec zip -r /tmp/file.zip {} +
find
recursa em subdiretórios. Para evitar isso, -prune
diz para não descer nos diretórios que encontra. Isso não é bom se eu executar find /usr/something -type d -prune -o …
, porque /usr/something
será ignorado. Por isso, corro find
em todas as entradas desse diretório, exceto .
e ..
.
Um idioma mais fácil é mudar para o diretório e tratar o diretório inicial .
especialmente. Aqui, isso alteraria o archive resultante, que teria caminhos no formato ./foo
em vez de usr/something/foo
. Essa técnica depende do fato de que -name .
corresponde apenas ao diretório inicial, todos os outros arquivos encontrados terão seu próprio nome.
cd /usr/something &&
find . ! -name . -prune -type f -user antoine -exec …
Observe que zip
pode ser executado mais de uma vez se a lista de nomes de arquivos for muito longa para uma única chamada. Isso é ok porque zip -r
substitui os arquivos existentes no arquivo; Se você usar outro arquivador, tome cuidado para não invocá-lo em um modo em que ele criaria um novo arquivamento (por exemplo, não use tar -c
).