удалить «дубликаты» файлов оболочки скрипта

У меня есть список файлов с именем:

file.txt file (1).txt file (2).txt file (7).txt 

и т.п.

Где больше (число) – последний обновленный файл, но некоторые промежуточные числа могут отсутствовать, и в каталоге также есть другие файлы.

Как проверить, есть ли «дублированный» файл, и, если есть, как скопировать содержимое file (maxnumer).txt в file.txt и удалить все file (*).txt .

Я попытался перечислить их с помощью ls -t file*(*)*.txt а затем создать цикл for но он выдает ошибку ( ls ): bash:syntax error near unexpected token '('

Предполагая, что временные метки ненадежны, мы бы хотели найти файл с наибольшим номером в скобках к концу имени файла.

Делая это:

 #!/bin/sh prefix=$1 if [ -z "$prefix" ]; then printf 'Usage: %s prefix [ suffix ]\n' "$0" >&2 exit 1 fi suffix=$2 for filename in "$prefix ("*")$suffix"; do [ ! -f "$filename" ] && continue num=${filename##*\(} # "file (xx).txt" --> "xx).txt" num=${num%\)*} # "xx).txt" --> "xx" # if no max number yet, or if current number is higher, update max if [ -z "$max" ] || [ "$num" -gt "$max" ]; then max=$num fi done # if we have a max number, use it to rename the file and then remove the other files if [ -n "$max" ]; then printf 'Would move %s to %s\n' "$prefix ($max)$suffix" "$prefix$suffix" # mv "$prefix ($max)$suffix" "$prefix$suffix" printf 'Would remove %s\n' "$prefix ("*")$suffix" # rm "$prefix ("*")$suffix" else printf 'Found no files matching "%s (*)%s"\n' "$prefix" "$suffix" fi 

Запуск это:

 $ tree . |-- file (1).txt |-- file (2).txt |-- file (7).txt |-- file.list |-- file.txt `-- script.sh 0 directory, 6 files $ sh script.sh file .txt Would move file (7).txt to file.txt Would remove file (1).txt Would remove file (2).txt Would remove file (7).txt 

(удалите закомментированные mv и rm чтобы фактически изменить файлы)

Это будет невозможно для имен файлов, таких как file (2) (30).txt (они также будут совпадать), поскольку предполагается, что все имена файлов соответствуют prefix (NN)suffix шаблона prefix (NN)suffix где NN – целое число.