LINUX.ORG.RU

Массовое переименование файлов через mv и sed

 , , ,


0

1

имеется: несколько файлов в дериктории, начинающихся на "." (скрытые) нужно переименовать их с простым удалением ентой точки.

sed -e 's/^\.//g'
- само переименование собственно

у меня получилось такой скриптик:

for i in \.*; do p=$(echo $i |sed -e 's/^\.//g'); mv $i $p; done;

как его можно упростить?

имею ввиду допустим опустить оператор for и т.д. понятно чо можно не вставлять переменную «p» и вместо нее сразу подставить «$(echo $i |sed -e 's/^\.//g')», но енто не думаю чо будет именно упрощением, т.к. для читаемости лучше все такие использовать енту переменную (по крайней мере для меня)

★★

Последнее исправление: safocl (всего исправлений: 1)

Ответ на: комментарий от safocl

тут мне не понятно как вставить второй аргумент в «mv» через «sed»?

safocl ★★
() автор топика

Для переименования лучше взять rename.

alozovskoy ★★★★★
()

mv $i $p

Обязательно нужны кавычки вокруг раскрытий переменных иначе от имени с пробелами команда превратится в тыкву.

Xenius ★★★★★
()

Массовое переименование файлов через mv и sed

Если это домашнее задание, то об этом надо предупреждать.

Если же прикладная задача, то ознакомьтесь с тем, что такое X-Y problem.

$ shopt -o nullglob
$ GLOBIGNORE='.:..'
$ for f in .*; do mv -- "$f" "${f%.}"; done
Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 3)
Ответ на: комментарий от anonymous

Вспомни про +

Про него тоже забудь - он запускает команды последовательно. xargs запускает параллельно и позволяет регулировать сколько максимально процессов запустить.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

параллельно

parallel всяко лучше

anonymous
()
Ответ на: комментарий от darktic

то есть отдельно для каждого файла запускать?

anonymous
()
Ответ на: комментарий от no-such-file

xargs -0 rename

а чем это лучше "-exec rename {} +" ? (ну за исключением, каких-то нестандарных опций)

anonymous
()
Ответ на: комментарий от safocl

ты наверно имел ввиду «${f#.}», а не «${f%.}»

Да. Извините, все время их путаю.

Zmicier ★★★★★
()
Ответ на: комментарий от Zmicier

ааа... ну так енто экранировка дота, ибо "." распознается как текущий каталог, а не начало названия файла

safocl ★★
() автор топика
Ответ на: комментарий от Shinma

при чем как я понимаю чо «ll» енто какой то кастомный алиас на команду «ls» с определенными параметрами?

safocl ★★
() автор топика
Ответ на: комментарий от safocl

Да системы разные у некоторых ll это альяс команды ls в long формате. Просто в некоторых системах это не альяс а бинарник. В общем просто вывод в лонг формате.

Shinma
()
Ответ на: комментарий от safocl

ну так енто экранировка дота, ибо "." распознается как текущий каталог, а не начало названия файла

ЛПП.

Zmicier ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.