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

Как насчет заглядывают /proc/mounts (или вывод команды монтирования).

мой /dev/sr0 запись говорит ro,....
мой /dev/sda1 запись говорит rw,....

Часто Ваш корневой раздел будет смонтирован с помощью UUID, или, как в моем случае, метке тома. Должны быть умными о той части, но CD-ROM и дополнительные диски перечислены как /dev/...

Потребность помнить, Вы ищете состояние RO/RW в ФАЙЛОВОЙ СИСТЕМЕ, не УСТРОЙСТВО.

12
23.05.2017, 15:40
4 ответа

Существует Perl rename команда, которая должна добиться цели. Остерегайтесь хотя: существует несколько различных названных команд rename, поэтому удостоверьтесь, что у Вас есть сценарий Perl, который ожидает a perlexpr как его аргумент. Это rename команда, обеспеченная perl пакет на Debian и производных (Ubuntu, Монетный двор, …), но не на других дистрибутивах, которым можно было назвать другую утилиту rename.

martin@martin ~/test % touch a.txt
martin@martin ~/test % touch b.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt

Как Вы видите, это - идемпотент - это не добавит префикс снова при вызове его многократно.

Это работает любой заменой (нулевая длина), запускаются строк (^) или запуск, сопровождаемый дополнительным prefix строка с prefix.

Я оставлю инкапсуляцию этого или в сценарии оболочки или в функции оболочки как осуществление для Вас :)

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

7
27.01.2020, 19:55
  • 1
    Это - хороший ответ, но я искал что-то более универсальное; для этого ответа Вам нужны и жемчуг и в это конкретное (или эквивалентный) rename присутствующий. И я действительно знаю, что суффиксы немного более тверды, это не было покрыто связанным вопросом, и я - новичок на Linux, ударе, сценарий оболочки, жемчуг и регулярные выражения, поэтому "немного тяжелее" довольно тверд мне! :) –  That Brazilian Guy 20.09.2013, 01:17

Если Вы используете bash, затем эта острота может сделать это для Вас (предположение, что у Вас есть переменные $prefix, $suffix и $extension легко доступный)

mv "$filename" "$prefix${filename%.$extension}$suffix.$extension"

У Вас могли быть свои сценарии быть похожими на это

#!/bin/bash
# Usage: addprefix <prefix> <files>

prefix=$1
shift
for f in "$@"
do
  mv "$f" "$prefix$f"
done

и

#!/bin/bash
# addsuffix <suffix> <files>

suffix=$1
shift
for f in "$@"
do
  extension=${f##*.}
  if [ -z $extension ]; then
    mv "$f" "$f$suffix"
  else
    mv "$f" "${f%.$extension}$suffix.$extension"
  fi
done
10
27.01.2020, 19:55
  • 1
    , Это почти прекрасно! Это было бы прекрасно, если бы это (1) проверило, присутствуют ли префикс или суффикс уже (и затем пропущены) и (2) работало над файлами без расширения. Извините за беспокойство так... –  That Brazilian Guy 20.09.2013, 17:13
  • 2
    Для (1) Вы могли (я думать, не протестированный) добавляют, что префикс проверяет обертывание mv в if [ $f == $prefix* ] и можно изменить суффиксный с if [ $f == *$suffix$([ ! -z $extension ] && echo -n '.')$extension ] вокруг пары mv управляет в addsuffix. Для (2) это должно уже работать над файлами без расширения, если я не ужасный программист. –  Aaron Okano 21.09.2013, 03:30

С zsh:

autoload zmv # in ~/.zshrc
zmv '(*~*suffix).ext' '${1}suffix.ext'

~ globbing оператор, который означает кроме zsh.

4
27.01.2020, 19:55

Простой пример изменения префикса и расширения всех изображений в текущей папке.

prefix=EG_
extension=.jpg
for i in $(ls); do mv $i "$prefix${i%.JPG}$extension";  done

Если вы хотите проверить, как это повлияет на ваши данные перед их изменением, замените mv на echo

, вывод для IMG_7993.JPG - EG_IMG_7993.jpg

{{1} }
1
27.01.2020, 19:55

Теги

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