bash
solução:
for f in /tmp/tmp.XXX/*.original.txt; do
bn="${f##*/}" # extracting file basename
cp "$f" "/root/hello/dump-${bn%%.*}.txt"
done
Eu quero copiar e renomear vários arquivos de um diretório para outro. Particularmente, eu quero algo assim:
/tmp/tmp.XXX/aaa.original.txt
/tmp/tmp.XXX/bb5.original.txt
/tmp/tmp.XXX/x2x.original.txt
copiado para
/root/hello/dump-aaa.txt
/root/hello/dump-bb5.txt
/root/hello/dump-x2x.txt
Eu tentei algumas coisas como essas que não funcionam:
cp /tmp/tmp.XXX/*.original.txt /root/hello/*.txt
find /tmp/tmp.XXX/ -name '*.original.txt' | xargs -i cp /root/hello/dump-{}.txt
for f in /tmp/tmp.XXX/*.original.txt; do cp -- "$f" "/root/hello/dump-$f.txt"; done
Normalmente, os códigos acima resultam em erro :
cp: cannot create regular file '/root/hello/dump-/tmp/tmp.XXX/aaa.original.txt.txt': No such file or directory