Você pode fazer a filtragem na cópia, digamos, no script de cópia. Ou você pode aplicar o filtro após a operação de cópia, removendo o que não é permitido ou necessário.
É possível colocar na lista de permissões extensões de arquivo específicas para pastas?
Por exemplo: eu gostaria de mover os álbuns de música para uma pasta, mas não quero que a capa seja transferida por não permitir * .png, * .jpg, etc., ...
Você pode fazer a filtragem na cópia, digamos, no script de cópia. Ou você pode aplicar o filtro após a operação de cópia, removendo o que não é permitido ou necessário.
A questão é certamente mais ampla do que a questão, portanto a resposta pode variar.
Originalmente, sistemas semelhantes ao Unix não conhecem o conceito de extensão de arquivo, embora alguns softwares possam identificar extensões para adaptar suas operações.
Além disso, uma expansão de nome de caminho deve corresponder a arquivos ou diretórios existentes localizados em um nível especificado no sistema de arquivos (sistema de arquivos hierárquico).
mv
pode mover uma hierarquia de diretórios inteira, portanto, mv
também move arquivos localizados em diretórios correspondentes, indistintamente.
Uma solução simples é remover a permissão de leitura nos arquivos desejados para impedir que eles sejam copiados.
prompt% cp -vr album /tmp
'album/' -> '/tmp/album'
'album/song.mp3' -> '/tmp/album/song.mp3'
'album/covert.png' -> '/tmp/album/covert.png'
cp: cannot open 'album/covert.png' for reading: Permission denied
prompt% ls -l album/covert.png
--w-r--r-- user user 8 Sep 07:27 album/covert.png
Os arquivos são transferidos no diretório de destino, exceto os arquivos protegidos para leitura.
A maneira ingênua de resolver isso é copiar tudo e excluir o arquivo que você não deseja.
Usando rsync
para copiar toda a estrutura de diretório source
para target
, então find
para excluir os arquivos que você não deseja de target
:
rsync -a source/ target
find target -type f \( -name '*.jpg' -o -name '*.png' \) -delete
Uma maneira mais simplificada de fazer isso é usar os recursos de filtragem de rsync
para não transferir os arquivos que você não deseja:
rsync -a --exclude='*.png' --exclude='*.jpg' source/ target
Em ambos os casos, talvez você queira adicionar --delete
e / ou --delete-excluded
à invocação rsync
se quiser excluir arquivos que não estão presentes no diretório de origem (se target
já contiver material e você quer que os dois diretórios sejam idênticos para além dos arquivos de imagem).
Tags filesystems