Se houver apenas os arquivos (e o diretório alvo) em seu diretório, basta usar mv
, em vez de find
:
mv * target
Ele reclamará que o "alvo" não pode ser movido por si mesmo, mas os arquivos estarão todos no alvo depois.
Eu tenho 100 arquivos em uma única pasta, incluindo uma pasta chamada "target". Eu quero migrar todos os arquivos desta pasta para o destino da pasta (exceto para a própria pasta de destino).
Existe um comando de terminal eficiente para fazer isso?
Se houver apenas os arquivos (e o diretório alvo) em seu diretório, basta usar mv
, em vez de find
:
mv * target
Ele reclamará que o "alvo" não pode ser movido por si mesmo, mas os arquivos estarão todos no alvo depois.
Isso também funciona:
find . -maxdepth 1 ! -name target ! -name . -exec mv "{}" target \;
Uma das principais vantagens do find
em confiar na conclusão do bash é que você obtém os arquivos ocultos ao mesmo tempo. mv * ...
não fará isso.
Você poderia, talvez, ir com algo como:
mv -t target * .[^.]*
Ou, como James aponta, você pode cortar o comando "Localizar" apenas para ver os arquivos ... E como LoremIpsum apontou se há bilhões deles, usar xargs
seria um pouco mais eficiente:
find . -maxdepth 1 -type f -print0 | xargs -0 mv -t target
Use isso
$ mv target ..
$ mv * ../target
$ mv ../target .