Я не знаю, подойдет ли вам эта работа, но вы можете основываться на следующем сценарии:
#!/bin/bash
cd "$1"
for i in *; do j=`echo $i | cut -c 1-16`; echo $1/$i\|$j;done | awk -F\| 'seen[$
2]++ == 1 { printf("echo \"%s\"", $1) | "sh" }'
В нем будут перечислены все вторые файлы, которые имеют те же первые 16 символов, что идругой файл в том же каталоге.Вы можете легко заменить команду echo внутри printf ("echo \"% s \ "", $ 1) командой mv.
Теперь, если вы хотите использовать этот сценарий во всех подкаталогах определенного каталога,давайте назовем это mydir, вы можете сделать это с помощью команды find, как это, при условии, что вы сохранили вышеупомянутый скрипт в файле с именем myscript, который находится в том же каталоге, что и mydir:
find mydir -type d -exec ./myscript {} \;
Помогает ли это?