O diretório de trabalho atual possui vários arquivos de teste numerados de 1 a 100. Eles são intitulados 1.txt
até 100.txt
.
O comando find . -maxdepth 1 -regextype posix-egrep -regex '.*/[ -._&a-zA-Z0-9]+\.txt' -exec bash -c 'mv "$@" "TestDir - Level One"' {} +
move todos os arquivos exceto um, por exemplo 15.txt
.
Em contraste, o comando find . -maxdepth 1 -regextype posix-egrep -regex '.*/[ -._&a-zA-Z0-9]+\.txt' -exec mv {} "TestDir - Level One"/ \;
move todos os arquivos.
Se o comando find . -maxdepth 1 -regextype posix-egrep -regex '.*/[ -._&a-zA-Z0-9]+\.txt' -exec bash -c 'mv "$@" "TestDir - Level One"' {} +
for executado novamente, ele retornará o erromv: missing destination file operand after 'TestDir - Level One' Try 'mv --help' for more information.
A versão de find
éfind (GNU findutils) 4.7.0-git
Você está perdendo a atribuição da
$0
string para abash -c '…'
chamada. O primeiro argumento dafind
chamada é atribuído a$0
(o nome do shell) em vez de$1
e, portanto, não é movido.(ênfase minha)
Altere seu comando para