Попробуйте установить опцию -o
для remount
для смены флагов.
mount -t tmpfs -o remount,rw,nosuid,nodev tmpfs /dev/shm
Подробнее читайте в разделе «ВАРИАНТЫ НЕЗАВИСИМОГО МОНТАЖА ФАЙЛОВОЙ СИСТЕМЫ».
http://manpages.ubuntu.com/manpages/precise/en/man8/mount.8.html
bashy ответ, специфичный для шаблона имени "xxx - yyyy.ddd" ..
find -type f | while read flnm ; do basename "$flnm" | awk -F'[\ .]' '{print $3 " " $2 " " $1 "."$4}'; done
Найдите файл и передайте имя циклу чтения while. Там используйте basename, чтобы извлечь имя и передать его Awk. Awk, используя несколько разделителей полей, пробел и точку, затем повторно печатает поля в желаемом порядке.
abcdef - ghijkl.pdf
становится
ghijkl - abcdef.pdf
практическим приложением ... переименовывать файлы в это новое имя шаблона
find -type f | while read flnm ; do mv "$(basename "$flnm")" "$(basename "$flnm" | awk -F'[\ .]' '{print $3 " " $2 " " $1 "."$4}')"; done
Единственное различие - включение команды mv и перенос имен в виде строк.
[[ $f =~ ^([^-]+)\ -\ ([^\.]+)\.(.*) ]] &&
mv "$f" "${BASH_REMATCH[2]} - ${BASH_REMATCH[1]}.${BASH_REMATCH[3]}"
Здесь используется оператор проверки регулярного выражения bash = ~
, чтобы проверить, соответствует ли данное имя файла (в $ f
) шаблону: «все, кроме тире, за которым следует пробел, тире, пробел, за которым следует что угодно, кроме точки, за которой следует точка, за которой следует что-нибудь или ничего ". Если имя файла соответствует этому шаблону, совпадающие биты заключенных в скобки подразделов регулярного выражения назначаются элементам массива BASH_REMATCH.
Чтобы сделать это для каждого файла в определенной папке:
cd /to/that/folder
for f in *
do
[ -f "$f" ] || continue
[[ $f =~ ^([^-]+)\ -\ ([^\.]+)\.(.*) ]] &&
mv "$f" "${BASH_REMATCH[2]} - ${BASH_REMATCH[1]}.${BASH_REMATCH[3]}"
done
pre=${f%%.*}
ext=${f##*.}
mv "$f" "${pre##*- } - ${pre%% -*}.$ext"
Поскольку вы используете Ubuntu, у вас должен быть хотя бы один из perl rename
или prename
$ rename -n -- 's/(\w*) - (\w*)/$2 - $1/' *.pdf
rename(abcdef - ghijkl.pdf, ghijkl - abcdef.pdf)
$ prename -n -- 's/(\w*) - (\w*)/$2 - $1/' *.pdf
abcdef - ghijkl.pdf renamed as ghijkl - abcdef.pdf
. В качестве альтернативы вы можете установить и использовать mmv
$ mmv -n '* - *.pdf' '#2 - #1.pdf'
abcdef - ghijkl.pdf -> ghijkl - abcdef.pdf
(во всех случаях удалите -n
для фактического завершения операции).
Вы можете создать сценарий с помощью этой команды:
\ls *-*.pdf | sed 's/\(.*\)-\(.*\).pdf/mv \1-\2.pdf \2-\1.pdf/' > script_mv.bash
Затем вы проверяете правильность сценария и можете его выполнить:
. ./script_mv.bash
Я написал \ ls, потому что он отменяет параметры в ls.
Шаблон sed означает: