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

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

В настоящее время это выглядит так:

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

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

ABC DEF

Для достижения

Folder1 Folder2 Folder3 ... Folder1000

Я немного новичок в Linux и до сих пор не знаю понятия bash. Любой, кто может давать подсказки / решения?

Настоящий живой просмотр

0
задан 24 January 2018 в 03:19

6 ответов

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

Я бы не стал писать сценарий ... просто rename

rename s/ABC\ DEF\ // *

s / string1 / string2 / вызывает это поиск и amp; замените string1 на строку 2.

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

наконец * заставляет ее работать на всех файлах / dirs в текущем каталоге

Прочитайте man rename, и он предоставит подсказки. Главные ссылки на страницы perlexprs (perl выражения, что означает больше man страниц), но они являются надмножеством POSIX, что означает, что у вас больше власти, но вы можете просто ограничить себя posix.

2
ответ дан 22 May 2018 в 15:20

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

Я бы не стал писать сценарий ... просто rename

rename s/ABC\ DEF\ // *

s / string1 / string2 / вызывает это поиск и amp; замените string1 на строку 2.

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

наконец * заставляет ее работать на всех файлах / dirs в текущем каталоге

Прочитайте man rename, и он предоставит подсказки. Главные ссылки на страницы perlexprs (perl выражения, что означает больше man страниц), но они являются надмножеством POSIX, что означает, что у вас больше власти, но вы можете просто ограничить себя posix.

2
ответ дан 17 July 2018 в 22:22

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

Я бы не стал писать сценарий ... просто rename

rename s/ABC\ DEF\ // *

s / string1 / string2 / вызывает это поиск и amp; замените string1 на строку 2.

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

наконец * заставляет ее работать на всех файлах / dirs в текущем каталоге

Прочитайте man rename, и он предоставит подсказки. Главные ссылки на страницы perlexprs (perl выражения, что означает больше man страниц), но они являются надмножеством POSIX, что означает, что у вас больше власти, но вы можете просто ограничить себя posix.

2
ответ дан 23 July 2018 в 23:00

Для простых текстовых совпадений, таких как это (на самом деле не требующих силы регулярных выражений), есть также 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, на самом деле это не намного больше работает для скрипта это в оболочке (bash или POSIX sh) -

for f in */; do mv -- "$f" "${f#ABC DEF }"; done
2
ответ дан 22 May 2018 в 15:20

Для простых текстовых совпадений, таких как это (на самом деле не требующих силы регулярных выражений), есть также 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, на самом деле это не намного больше работает для скрипта это в оболочке (bash или POSIX sh) -

for f in */; do mv -- "$f" "${f#ABC DEF }"; done
2
ответ дан 17 July 2018 в 22:22

Для простых текстовых совпадений, таких как это (на самом деле не требующих силы регулярных выражений), есть также 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, на самом деле это не намного больше работает для скрипта это в оболочке (bash или POSIX sh) -

for f in */; do mv -- "$f" "${f#ABC DEF }"; done
2
ответ дан 23 July 2018 в 23:00

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

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