Кто-нибудь знает, как написать сценарий bash, который может переименовать все папки в каталоге? Для этого нужно удалить первые слова всех папок.
В настоящее время это выглядит так:
ABC DEF Folder1
ABC DEF Folder2
ABC DEF Folder3
...
ABC DEF Folder1000
Удалить одинаковые буквы
ABC DEFДля достижения
Folder1
Folder2
Folder3
...
Folder1000
Я немного новичок в Linux и до сих пор не знаю понятия bash. Любой, кто может давать подсказки / решения?
Настоящий живой просмотр
Быстрый ответ
Я бы не стал писать сценарий ... просто rename
rename s/ABC\ DEF\ // *
s / string1 / string2 / вызывает это поиск и amp; замените string1 на строку 2.
строка 1 сделана более длинными из-за пробелов и ей необходимо убрать их '\', строка 2 пуста '//'
наконец * заставляет ее работать на всех файлах / dirs в текущем каталоге
Прочитайте man rename, и он предоставит подсказки. Главные ссылки на страницы perlexprs (perl выражения, что означает больше man страниц), но они являются надмножеством POSIX, что означает, что у вас больше власти, но вы можете просто ограничить себя posix.
Быстрый ответ
Я бы не стал писать сценарий ... просто rename
rename s/ABC\ DEF\ // *
s / string1 / string2 / вызывает это поиск и amp; замените string1 на строку 2.
строка 1 сделана более длинными из-за пробелов и ей необходимо убрать их '\', строка 2 пуста '//'
наконец * заставляет ее работать на всех файлах / dirs в текущем каталоге
Прочитайте man rename, и он предоставит подсказки. Главные ссылки на страницы perlexprs (perl выражения, что означает больше man страниц), но они являются надмножеством POSIX, что означает, что у вас больше власти, но вы можете просто ограничить себя posix.
Быстрый ответ
Я бы не стал писать сценарий ... просто rename
rename s/ABC\ DEF\ // *
s / string1 / string2 / вызывает это поиск и amp; замените string1 на строку 2.
строка 1 сделана более длинными из-за пробелов и ей необходимо убрать их '\', строка 2 пуста '//'
наконец * заставляет ее работать на всех файлах / dirs в текущем каталоге
Прочитайте man rename, и он предоставит подсказки. Главные ссылки на страницы perlexprs (perl выражения, что означает больше man страниц), но они являются надмножеством POSIX, что означает, что у вас больше власти, но вы можете просто ограничить себя posix.
Для простых текстовых совпадений, таких как это (на самом деле не требующих силы регулярных выражений), есть также 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
Для простых текстовых совпадений, таких как это (на самом деле не требующих силы регулярных выражений), есть также 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
Для простых текстовых совпадений, таких как это (на самом деле не требующих силы регулярных выражений), есть также 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