Como posso encontrar apenas os arquivos * .mp3 com um comando recursivo, como ls -R *.mp3
em um diretório que contém vários subdiretórios e, no final, copiá-los em um diretório que eu escolher.
Obrigado por seu apoio.
command-line
V 3 L 3 N 0
fonte
fonte
find /path/to/dir/ -name '*.c' | xargs cp -t /target/
xargs
normalmente é muito mais rápido. Acabei de executar um teste rápido aqui, encontrando uma carga de arquivos c e executáls -l
-los. São 0m2.420s paraxargs
e 0m25.494s para-exec
... Claramente, neste caso, acp
operação levará a maior parte do tempo, portanto provavelmente não importa, mas vale a pena observar.-n`` switch to the
comando cp` para evitar sobrescrever no caso de nomes duplicados (ou escrever um script que verifica a existência de duplicatas antes de copiar e mudar o nome do alvo, se necessário)Há também outra maneira de fazer isso, que eu acho que se adequará perfeitamente ao seu propósito. Você pode combinar
find
com umwhile
loop e nem precisar usar umexec
ouxargs
todos. Se, por exemplo, você quiser copiar o arquivomp3s
da sua pasta de download para a pasta de músicas, use o script a seguir, que eu usei várias vezes.Você pode modificá-lo como quiser, alterando os diretórios que
find
pesquisam e colocam os arquivos resultantes; se nenhum diretório for indicado,find
procurará na pasta pessoal inteira. Você também pode alterarcp
paramv
ou outros comandos. É bem rápido, pois acabei de testá-lo com 3945.jpg
arquivos! Copie-o para um editor de texto, salve-o e torne-o executável executandochmod +x myscript
.Neste notável wiki do Bash , é mostrado como é útil combinar o
while
loop e osread
comandos para processar a saída dofind
comando; e da maneira que fiz isso, garante que o script não seja interrompido se encontrar nomes de arquivos com espaços ou outros caracteres inesperados ou especiais.Para informações mais gerais sobre o
find
comando, entre no terminalman find
ou consulte as páginas de manual do Ubuntu online . Para uma ótima introdução ao uso do find, consulte este artigo também.fonte
find ~/Downloads -type f -iname '*.mp3' | while read mp3file; do cp "$mp3file" ~/Music; done
mais simples?-n`` switch to the
comando cp` para evitar sobrescrever no caso de nomes duplicados (ou escrever um script que verifica a existência de duplicatas antes de copiar e mudar o nome do alvo, se necessário)