У меня есть много фотографий, которые нужно переименовать.
[Wedding] Happy Day_001 [February].jpg
[Mountain] Summer Camp_165 [May].jpg
[Beach] Music Fest_58 [August].jpg
Мне нужны все квадратные скобки, которые нужно удалить. Для этого я нашел это & amp; это.
Используя команду sed, как на этих страницах, пространство до и после скобок все еще существует. В моем случае я хочу, чтобы текст внутри, пробел перед & amp; после, и сами скобки для удаления.
Happy Day_001.jpg
Summer Camp_165.jpg
Music Fest_58.jpg
Чтобы удалить [first] & amp; [last], как я могу это сделать с помощью команды sed?
sed - неправильный инструмент. Он не переименовывает файлы. Хотя вы можете связать его с чем-то, что может, проще использовать rename из Perl:
rename -n 's/\[.*?\]//g' *
С помощью -n, rename покажет, какие изменения будут сделаны. Запустите без -n, чтобы фактически переименовать файлы. rename - Perl, а в Perl .*? не является жадным совпадением, например .*, поэтому вам не нужно использовать трюки, такие как [^]]*.
Чтобы удалить окружающие пробелы :
rename -n 's/\s*\[.*?\]\s*//g' *
sed - неправильный инструмент. Он не переименовывает файлы. Хотя вы можете связать его с чем-то, что может, проще использовать rename из Perl:
rename -n 's/\[.*?\]//g' *
С помощью -n, rename покажет, какие изменения будут сделаны. Запустите без -n, чтобы фактически переименовать файлы. rename - Perl, а в Perl .*? не является жадным совпадением, например .*, поэтому вам не нужно использовать трюки, такие как [^]]*.
Чтобы удалить окружающие пробелы :
rename -n 's/\s*\[.*?\]\s*//g' *
sed - неправильный инструмент. Он не переименовывает файлы. Хотя вы можете связать его с чем-то, что может, проще использовать rename из Perl:
rename -n 's/\[.*?\]//g' *
С помощью -n, rename покажет, какие изменения будут сделаны. Запустите без -n, чтобы фактически переименовать файлы. rename - Perl, а в Perl .*? не является жадным совпадением, например .*, поэтому вам не нужно использовать трюки, такие как [^]]*.
Чтобы удалить окружающие пробелы :
rename -n 's/\s*\[.*?\]\s*//g' *
Вы не должны использовать sed для переименования файлов, но вы можете использовать программу Perl rename, например:
$ rename -n 's/\[[^]]+\] ([^[]+) \[[^]]+\]/$1/' *
rename([Beach] Music Fest_58 [August].jpg, Music Fest_58.jpg)
rename([Mountain] Summer Camp_165 [May].jpg, Summer Camp_165.jpg)
rename([Wedding] Happy Day_001 [February].jpg, Happy Day_001.jpg)
Удалить -n после тестирования, чтобы фактически переименовать файлы .
Это работает только в том случае, если ваши имена совпадают. Ответ муру гораздо более портативен.
Вы не должны использовать sed для переименования файлов, но вы можете использовать программу Perl rename, например:
$ rename -n 's/\[[^]]+\] ([^[]+) \[[^]]+\]/$1/' *
rename([Beach] Music Fest_58 [August].jpg, Music Fest_58.jpg)
rename([Mountain] Summer Camp_165 [May].jpg, Summer Camp_165.jpg)
rename([Wedding] Happy Day_001 [February].jpg, Happy Day_001.jpg)
Удалить -n после тестирования, чтобы фактически переименовать файлы .
Это работает только в том случае, если ваши имена совпадают. Ответ муру гораздо более портативен.
Вы не должны использовать sed для переименования файлов, но вы можете использовать программу Perl rename, например:
$ rename -n 's/\[[^]]+\] ([^[]+) \[[^]]+\]/$1/' *
rename([Beach] Music Fest_58 [August].jpg, Music Fest_58.jpg)
rename([Mountain] Summer Camp_165 [May].jpg, Summer Camp_165.jpg)
rename([Wedding] Happy Day_001 [February].jpg, Happy Day_001.jpg)
Удалить -n после тестирования, чтобы фактически переименовать файлы .
Это работает только в том случае, если ваши имена совпадают. Ответ муру гораздо более портативен.