Você não quer usar ls
, você quer usar shell e manipulação de string :
$ for f in *.rej; do
size=$(stat --printf "%s" "${f%.rej}.failed") &&
if [ $(stat --printf "%s" "$f") -eq "$size" ]; then
mv "${f%.rej}.failed" backup/;
fi; done 2>/dev/null
Explicação
O comando stat --printf "%s"
imprimirá o tamanho de um arquivo em bytes. ${f%.rej}.failed
imprimirá qualquer que seja o nome do arquivo .rej
atual, mas com a extensão .failed
em vez da .rej
. Se esse arquivo existir, então size=$()
sairá corretamente e o script continuará ( &&
). Portanto, se o $size
do arquivo .failed
for o mesmo que o tamanho do arquivo .rej
, o arquivo .failed
será movido para o diretório backup/
.