Se referindo-se a um sistema Linux com GNU, Gawk, então abaixo está uma solução. A fonte é /home/my_folder
, copiando para /dest
para nomes de arquivos com mais de 7 caracteres, supondo que não haja nomes de arquivos com espaços:
ls /home/my_folder/ |awk '{if(length($0)>7){print "cp /home/my_folder/"$0" /dest/"$0";";}}'
Quais resultados:
cp /home/my_folder/orbit-antixcat /dest/orbit-antixcat;
cp /home/my_folder/spacefm-antixcat-569be3dc.tmp /dest/spacefm-antixcat-569be3dc.tmp;
cp /home/my_folder/xsession-modified-date /dest/xsession-modified-date;
Se isso estiver correto, envie o shell para copiar os arquivos:
ls /home/my_folder/ |awk '{if(length($0)>7){print "cp /home/my_folder/"$0" /dest/"$0";";}}'|bash
Pode adicionar algumas citações para acomodar arquivos com espaços em seus nomes:
ls /home/my_folder |awk '{if(length($0)>7){print "cp 7/home/my_folder/"$0"7 7/dest/"$0"7;";}}'|bash
Exemplo de saída com aspas:
cp '/home/my_folder/kdecache-antixcat' '/dest/kdecache-antixcat';
cp '/home/my_folder/ksocket-antixcat' '/dest/ksocket-antixcat';
Pode especificar o binário cp se estiver com um alias; talvez haja uma confirmação ao sobrescrever que você não quer.
ls /home/my_folder |awk '{if(length($0)>2){print "/bin/cp 7/home/my_folder/"$0"7 7/dest/"$0"7;";}}'|bash
Acima pode ser modificado para copiar diretórios, se necessário; atualmente eles são omitidos.