Другая вещь проверить состоит в том, если Ваша система устанавливает переменную среды TMOUT. Для проверки этого, можно просто сделать:
env | grep TMOUT
или
echo $TMOUT
Если это установлено, Вы могли бы изменить его или сбросить его. Изменить значение:
export TMOUT=3600
Где число является числом секунд, пока Вы не выходитесь из системы. Иначе сбросьте его для выключения функции:
unset TMOUT
Отметьте, может случиться так, что Ваш системный администратор установил это из соображений безопасности. Таким образом, если Вы не системный администратор, можно хотеть проверить это прежде, чем изменить что-либо сами.
Вот один способ сделать это в Bash:
for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done
Я использовал echo
здесь, таким образом, сама команда ничего не делает кроме пар печати имен файлов. Если тот список представляет изменения, Вы хотите сделать, то можно измениться echo
к чему-то как mv -i --
который затем переместит Ваши файлы (и предложит Вам прежде, чем перезаписать).
for
выполняет итерации через каждый файл, подобранный *
. Затем мы определяем, является ли расширение уже нижним регистром, если это, мы идем дальше, если это не, мы продолжаем перемещать его (или повторять его, в зависимости от обстоятельств). Это использует Bash, создал в строковых операциях, о которых можно читать здесь: http://tldp.org/LDP/abs/html/string-manipulation.html
В zsh:
autoload zmv
zmv '(*).MP3' '$1.mp3' # rename files in the current directory only
zmv '(**/)(*).MP3' '$1$2.mp3' # rename files in subdirectories as well
Также заботиться о .Mp3
или .mP3
файлы:
zmv '(**/)(*).(#i)mp3' '$1$2.mp3'
Вы могли использовать переименовать команду (остерегайтесь существует две основных реализации с различными API) для тех. Например, для изменения случая расширений файла от верхнего для понижения попробуйте это:
с rename
от util-linux
(иногда называемый rename.ul
), принятие .JPG
происходит только однажды в именах файлов
rename -- .JPG .jpg *.JPG
с rename
от perl
(иногда называемый prename
; несколько вариантов были опубликованы):
rename 's/\.JPG$/.jpg/' ./*.JPG
Вот некоторое учебное руководство парней о том, как он переместился от грязного сценария удара до этой простой команды для точно Вашего примера использования.
Другая необычная команда, чтобы сделать это pax
. При использовании ZSH для оболочки Вы могли бы также использовать zmv
.
syntax error at (user-supplied code), near "."
, когда я выполняю эту команду. спасибо
– Ryan Gates
06.06.2017, 04:31
Использование perl-переименовывает, швейцарский нож переименования файла с регулярными выражениями (на человечности, это связывается пакетом жемчуга как предварительное имя):
# Replace prename as appropriate (i.e. if you've got it installed under a different name
find /RootPath -type f -iname '*.mp3' -print0 | xargs -0 prename 's/mp3$/mp3/i'
Если Вы - осторожный вид, используйте-n, и-v опции к жемчугу переименовывают для наблюдения то, что он на самом деле сделает.
Вам нужен сценарий, потому что "расширения" в соответствии с Linux являются на самом деле просто частями строки имени файла. Необходимо сделать некоторую обработку строк в сценарии для получения нового имени.
#!/bin/bash
for NAME in *.JPG
do
PREFIX=${NAME%.*}
NEWNAME="$PREFIX.jpg"
mv "$NAME" "$NEWNAME"
done
Двойное заключение в кавычки важно, если у Вас есть имена файлов с пробелом в них. Я думал, что часть двойного заключения в кавычки была небольшим inobvious.
В bash :
# renaming files in the current directory only
for f in *.MP3; do mv "$f" "${f%.MP3}.mp3"; done
# renaming files in subdirectories as well
for f in *{,/*}.mp3; do mv "$f" "${f%.MP3}.mp3"; done
сначала сделайте резервную копию ваших файлов! вы можете использовать лайнер python one -:
python -c "import glob,os; [os.rename(fn, fn.replace('.MP3', '.mp3')) for fn in glob.glob('PATH_TO_YOUR_DIRECTORY')]"
РЕДАКТИРОВАТЬ:
Вот подробное объяснение того, как на самом деле работает один вкладыш -. Используя python -c
, мы передаем команду интерпретатору Python. После импорта библиотек os
для функции rename
и glob
для списка файлов нам нужно перебрать список файлов в заданном каталоге, который я назвал PATH_TO_YOUR_DIRECTORY
, например что-то вроде ./*
для всего в текущем каталоге.
В синтаксисе one -liner, к сожалению, for
циклы не работают после нотации import
, поэтому нам нужно использовать скобочную нотацию. т.е. для каждого имени файла или каталога, которое glob
дает нам по заданному пути в виде строки, мы заменяем *.MP3 на *.mp3.
Поскольку в OP не упоминается рекурсивный поиск, я не стал включать его в первую очередь.