Для вашего конкретного случая вы хотите использовать mmv
следующим образом:
pax> ll
total 0
drwxr-xr-x+ 2 allachan None 0 Dec 24 09:47 .
drwxrwxrwx+ 5 allachan None 0 Dec 24 09:39 ..
-rw-r--r-- 1 allachan None 0 Dec 24 09:39 file1.txt
-rw-r--r-- 1 allachan None 0 Dec 24 09:39 file2.avi
pax> mmv '*.*' '#1_#1.#2'
pax> ll
total 0
drwxr-xr-x+ 2 allachan None 0 Dec 24 09:47 .
drwxrwxrwx+ 5 allachan None 0 Dec 24 09:39 ..
-rw-r--r-- 1 allachan None 0 Dec 24 09:39 file1_file1.txt
-rw-r--r-- 1 allachan None 0 Dec 24 09:39 file2_file2.avi
Вы должны знать, что сопоставление с подстановочными знаками не является жадным. Это означает, что файл a.b.txt
будет преобразован в a_a.b.txt
, а не a.b_a.b.txt
.
Программа mmv
была установлена как часть моего CygWin, но мне пришлось
sudo apt-get install mmv
на моей коробке с Ubuntu, чтобы получить его. Если он не входит в стандартный дистрибутив, надеюсь, какой бы менеджер пакетов вы ни использовали, он будет доступен.
Если по какой-то причине вам не разрешено устанавливать его, вам придется использовать одно из других решений типа bash
for
-loop, показанных в других ответах. Я сам предпочитаю краткость mmv
, но у вас может не быть выбора.