Как насчет заглядывают /proc/mounts
(или вывод команды монтирования).
мой /dev/sr0
запись говорит ro,....
мой /dev/sda1
запись говорит rw,....
Часто Ваш корневой раздел будет смонтирован с помощью UUID, или, как в моем случае, метке тома. Должны быть умными о той части, но CD-ROM и дополнительные диски перечислены как /dev/...
Потребность помнить, Вы ищете состояние RO/RW в ФАЙЛОВОЙ СИСТЕМЕ, не УСТРОЙСТВО.
Существует 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
.
Я оставлю инкапсуляцию этого или в сценарии оболочки или в функции оболочки как осуществление для Вас :)
Постфикс немного более тверд, хотя, потому что необходимо выяснить, какая часть имени файла составляет расширение...
Если Вы используете 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
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
.
Простой пример изменения префикса и расширения всех изображений в текущей папке.
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} }
rename
присутствующий. И я действительно знаю, что суффиксы немного более тверды, это не было покрыто связанным вопросом, и я - новичок на Linux, ударе, сценарий оболочки, жемчуг и регулярные выражения, поэтому "немного тяжелее" довольно тверд мне! :) – That Brazilian Guy 20.09.2013, 01:17