Se você usar um pipe, o comando antes do pipe é concluído. Você não pode retomar seu comando find
com -exec
no outro lado dele. O comando head
acha que -exec
é uma série de opções para ele, mas não possui essa opção como -e
, portanto, "opção inválida"
Se os seus nomes de arquivos não têm espaços ou outros caracteres estranhos, você deve ser capaz de gerenciar assim:
find /home/carl/music/rock/SE/ -name "*_" -printf '%A@ %p\n' | sort -n | head -n 1 | sed 's/.* //' | xargs -p -I '{}' cp -v -- '{}' /home/carl/playout_rock_SE/
-
sed 's/.* //'
remove o timestamp agora que escolhemos o arquivo (isso retira tudo e inclui o primeiro espaço)
-
-p
interactive - confirme antes de executar o comando
-
-I
replace string - para que possamos colocar o nome do arquivo de entrada antes do destino para fornecer a sintaxe correta do cp
-
cp -v --
nos diz o que está sendo copiado e trata qualquer coisa depois disso como um argumento, mesmo que pareça uma opção
No entanto, eu recomendo usar a resposta muito mais confiável do steeldriver ;)