Baixei todos os arquivos de um site do Internet Archive. Agora tenho um diretório com mais de 1.000 subdiretórios rotulados por data de arquivamento. Cada um desses subdiretórios contém alguns arquivos.
- Quero mover todos esses arquivos nos subdiretórios para um diretório, mas alguns desses arquivos têm o mesmo nome (porque são versões diferentes do mesmo arquivo em momentos diferentes).
- Quero acrescentar o nome do diretório de onde o arquivo vem ao nome do arquivo somente se for um nome de arquivo duplicado (em vez de substituir o arquivo no novo diretório).
Existe uma maneira de fazer isso?
Parece que você prefere renomear arquivos com esse sufixo quando eles são encontrados em mais de um diretório. Talvez algo como:
Observe que
$target
não deve ser um desses subdiretórios se não estiver vazio para começar, ou você precisará adaptar o<*/*>
padrão para garantir que ele exclua seus arquivos.Observe também que os arquivos ocultos são excluídos. Você pode alterar o padrão
<{,..?,.[!.]}*/{,..?,.[!.]}*>
se quiser.Use a opção
mv
de--backup
, conforme descrito emman mv
, e, com "milhares" de diretórios/arquivos, usefind
exargs
. Algo como ( não testado ):Então, para remover os diretórios agora vazios, aproveite
rmdir
a recusa de excluir diretórios não vazios, faça ( Não testado ):