Переименуйте все файлы в папке так, чтобы удалить текст между двумя одинаковыми символами

Экран не имеет переменной среды, такой как TMUX , однако для TERM установлено значение «экран», поэтому Вы можете это проверить. У экрана есть способ повторного прикрепления / создания единого набора флагов.

-d -R Повторно подключить сеанс и, при необходимости, отсоединить или даже сначала создать его.

# screen Start Script Need To Work!!
if which screen >/dev/null 2>&1; then
    #if not inside a screen session, and if no session is started, start a new session
    [ "$TERM" != "screen" ] && screen -d -R
fi
2
13.04.2017, 15:36
3 ответа

Это должно решить эту проблему

for file in $(find ./)
do
  newname=$(echo ${file} | sed -e 's/\.\(.*\)\././')
  mv ${file} ${newname}
done
-1
27.01.2020, 22:11

Использование утилиты переименования perl:

prename 's/\.[^.]*\././' *

prename позволяет вам переименовывать файлы, используя выражения Perl.

В некоторых системах одна и та же программа называется переименовать , а не (или так же) prename . Существуют и другие программы, называемые rename , которые работают по-другому - проверьте справочную страницу rename в вашей системе.

например. по умолчанию переименование в системах Debian является символической ссылкой на prename (через систему / etc / alternatives ). Другие дистрибутивы могут отличаться.

В Debian также есть пакет под названием rename , который содержит расширенную версию prename под названием file-rename . Это более новая обновленная версия того же скрипта. У него более высокий приоритет среди альтернатив, поэтому при установке пакета символическая ссылка переименовать изменится на file-rename .

1
27.01.2020, 22:11

В zsh используйте zmv . Запустите autoload -U zmv или поместите это в свой `/ .zshrc`, затем

zmv '(*).*(.*)' '$1$2'

или

zmv -w '*.*.*' '$1.$3'

. Альтернативно, если у вас есть команда prename (Perl-скрипт, который применяется выражение для каждого имени файла):

prename 's/\..*\././' *.*.*

Только с инструментами, доступными в каждой системе POSIX, используйте цикл оболочки и расширение параметра для извлечения частей имени.

for x in *.*.*; do
  mv -- "$x" "${x%.*.*}.${x##*.}"
done
2
27.01.2020, 22:11

Теги

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