Удалите первые слова из всех имен папок в каталоге

Кто-либо знает, как записать сценарий удара, который может переименовать все папки в каталоге? Это должно удалить первые слова всех папок.

В настоящее время это похоже на это:

ABC DEF Folder1
ABC DEF Folder2
ABC DEF Folder3
...
ABC DEF Folder1000

Удалите идентичные буквы

ABC DEF

Достигнуть

Folder1
Folder2
Folder3
...
Folder1000

Я довольно плохо знаком с Linux и не делаю получил подсказку об ударе, пишущем сценарий все же. Кто-либо, кто может обеспечить подсказки / решения?

Реальный предпросмотр в реальном времени

0
задан 23 January 2018 в 16:19

2 ответа

Быстрый ответ

Я не обеспокоился бы сценарием... просто rename

rename s/ABC\ DEF\ // *

s/string1/string2/заставляет это искать и заменять string1 строкой 2.

строка 1 сделана более длинными должными пробелами и потребностью выйти из них '\', представьте в виде строки 2 являющийся пустым '//'

наконец * вынуждает это работать над всеми файлами/директорами в текущем каталоге

Читайте man rename и это даст представления. Основная страница refererences 'perlexprs' (выражения жемчуга; значение больше man страницы), но они - надмножество POSIX, означающих Вас, имеют больше силы, но может просто ограничить себя posix также.

2
ответ дан 31 October 2019 в 03:40

Для простых текстовых соответствий, таких как это (которые действительно не требуют питания регулярных выражений) существует также mmv например, данный

$ ls -d */
ABC DEF Folder1/   ABC DEF Folder3/  ABC DEF Folder6/  ABC DEF Folder9/
ABC DEF Folder10/  ABC DEF Folder4/  ABC DEF Folder7/
ABC DEF Folder2/   ABC DEF Folder5/  ABC DEF Folder8/

затем

mmv -r 'ABC DEF *' '#1'

результаты в

$ ls -d */
Folder1/   Folder2/  Folder4/  Folder6/  Folder8/
Folder10/  Folder3/  Folder5/  Folder7/  Folder9/

FWIW это не на самом деле намного больше работы для сценариев его в (удар или POSIX sh) оболочка -

for f in */; do mv -- "$f" "${f#ABC DEF }"; done
2
ответ дан 31 October 2019 в 03:40

Другие вопросы по тегам:

Похожие вопросы: