Se o seu pax
suportar a opção -0
:
find . -type 'f' -path '*downloads*' -print0 |
pax -rw0s'|.*downloads/||' /mydir
Eu quero copiar alguns arquivos e incluir seu diretório pai no processo.
A estrutura atual é semelhante a:
/Module1/A/downloads/m13312/file.pdf
/Module1/A/downloads/m17312/file.pdf
/Module1/B/downloads/m18312/file.pdf
/Module2/A/downloads/m19312/file.pdf
Eu quero pegar as duas últimas seções do caminho para que eu termine com:
/mydir/m13312/file.pdf
/mydir/m17312/file.pdf
/mydir/m18312/file.pdf
/mydir/m19312/file.pdf
Eu tentei usar cut
e awk
para obter os resultados corretos, mas parece que não consigo obter o caminho para retornar corretamente. Aqui está um exemplo para apenas ecoar o que preciso (ainda não cheguei à parte de cópia):
find . -type 'f' -path '*downloads*' -print0 | xargs -0 -I {} echo 'cut -d/ -f4-5 <<<{}'
Isso imprime todo o caminho, então sei que não posso usar isso ainda.
Isso deve ser feito:
for file in /Module*/*/downloads/m13312/file.pdf
do
file_directory="/mydir/$(basename "$(dirname "$file")")"
mkdir -p "$file_directory"
cp "$file" "$file_directory"
done