Не настолько легко, если Вы хотите принять во внимание wlan и другие альтернативные интерфейсы. Если Вы знаете, для какого интерфейса Вы хотите адрес (например, eth0, первая плата Ethernet), можно использовать это:
ip="$(ifconfig | grep -A 1 'eth0' | tail -1 | cut -d ':' -f 2 | cut -d ' ' -f 1)"
Другими словами, получите меня информация о конфигурации сети, ищите eth0
, получите ту строку и следующую (-A 1
), получите только последнюю строку, получите вторую часть той строки при разделении с :
, затем получите первую часть этого при разделении с пространством.
Bash или Ksh вместе с mv
мог решить его:
for f in *.png; do mv -n "$f" "${f/-0}"; done
В случае, если имя файла может иметь “0” после того, как первый тире также и эти “-0” всегда перед точкой, можно хотеть включать ту точку также в выражение:
for f in *.png; do mv -n "$f" "${f/-0./.}"; done
Но поскольку то правило переименования просто, если Вы имеете rename
от пакета util-linux, который сделает это также:
rename '-0.' '.' *.png
Простой метод: Файлы в текущем каталоге только
С zsh:
autoload zmv
zmv '(*)-0(.png)' '$1$2'
С другими оболочками:
for x in *-0.png; do mv -- "$x" "${x%-0.*}.png"; done
Расширенный метод: Файлы в текущем каталоге и/или подкаталогах
С zsh:
zmv '(**/)(*)-0(.png)' '$1$2$3'
С ksh93:
set -o globstar
for x in **/*-0.png; do mv -- "$x" "${x%-0.*}.png"; done
С ударом ≥4, как выше, но использование shopt -s globstar
вместо set
команда.
С другими оболочками:
find -name '*-0.png' -exec sh -c 'for x; do mv -- "$x" "${x%-0.*}.png"; done' _ {} +
Если у вас есть пакет mmv
:
mmv '*-0.png' '#1.png'
Как (последние версии) переименовать
, это будет разумно осторожно, чтобы избежать перезаписывания существующих файлов.
В Fish Shell на OSX:
for f in *.png; mv -n $f (basename $f -0.png).png; end
Fish Shell: https://fishshell.com/