У меня нет опыта программирования, и в основном я использую однострочник, а иногда и больше, чтобы выполнить работу. У меня проблема с пакетным переименованием файлов, которые не соответствуют определенному шаблону.
Образцы имен файлов из каталога:
Meeting_Packages.pdf
13_textfile0
19_textfile0
23_textfile0
29_textfile0
33_textfile1
45_textfile0
5_textfile3
Membership.pdf
13_textfile1
19_textfile1
23_textfile1
29_textfile1
34_textfile0
46_textfile0
6_textfile0
xyz2009.pdf
13_textfile2
19_textfile2
23_textfile2
29_textfile2
34_textfile1
47_textfile0
6_textfile1
meeting.ics
Я хочу , чтобы переименовать файлы , например Meeting_Packages.pdf
Membership.pdf
meeting.ics
и xyz2009.pdf
в файл , откуда они пришли (входной файл). На самом деле это вывод ripmime
с письмами, так как xx_textfilex
и другие являются вложениями. Я хочу назвать вложения в качестве исходного входного файла
Мой код:
#!/bin/bash
FILES=*.mime
for f in $FILES
do
echo "Processing $f"
#rip mails into attachments and text files also add a prefix to text files
ripmime -i $f -d ~/test/ripmime --prefix
#Remove white spaces from files
rename 's/ /_/g' ~/test/ripmime/*
#rename attachments as original input files
rename 's/\[^0-9]/'$f/ ~/test/ripmime/*
done
Моя проблема - последняя строка переименования, где я пытаюсь фильтровать файлы, отличные от xx_textfilex
и переименовывать. Я пробовал разные регулярные выражения, но не мог этого сделать. Я могу выбрать и переименовать текстовые файлы:
rename 's/textfiles/'$f/ ~/test/ripmime/*
но мне нужно обратное к этому и переименовать файлы, отличные от текстовых файлов.
Как я могу это сделать?