Мне нужно изменить постфиксы всех файлов (все равно .JPEG) на .jpeg (Капитал против нижнего регистра). Есть ли быстрый способ сделать это?
Использовать программу Perl rename, которая установлена по умолчанию:
rename 's/\.JPEG$/.jpeg/' *.JPEG
Первый аргумент - это регулярное выражение Perl, сопоставляющее имена файлов, заканчивающиеся на .JPEG, и заменяет его на .jpeg. [ ! d1]
Второй аргумент выбирает файлы, которые должны быть сопоставлены, в вашем случае каждый файл в текущем каталоге, заканчивающийся на .JPEG. Конечно, вы могли бы указать другое место:
rename 's/\.JPEG$/.jpeg/' ~/Pictures/*.JPEG
Другие ответы, которые я видел:
rename s/.JPEG$/.jpeg/ * - это также переименует такие файлы, как StupidJPEG - Stupi.jpeg потому что точка соответствует любому символу. .JPEG$ является регулярным выражением rename 's/\.JPEG$/\.jpeg/' * - работает, но он менее эффективен, потому что он передает все файлы в текущем каталоге на rename. rename -n 's/.JPEG$/.jpeg/' *.JPEG - опция -n будет отображать переименованные файлы, фактически не переименовывая их («сухой ход»). Поскольку *.JPEG соответствует файлам с пометкой только с .JPEG, проблема с точкой-совпадениями здесь вообще не существует.Хотя это, возможно, не лучшее решение для этого конкретного случая использования, также работает
for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done
. Мы можем сделать некоторые хитрости с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), заканчивая:
for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в дополнение к переименованию файлов, например, регистрировать имена, которые были изменены, или даже просто сделать сухой прогон, чтобы убедиться, что он делает то, что вы хотите.
Хотя это, возможно, не лучшее решение для этого конкретного случая использования, также работает
for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done
. Мы можем сделать некоторые хитрости с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), заканчивая:
for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в дополнение к переименованию файлов, например, регистрировать имена, которые были изменены, или даже просто сделать сухой прогон, чтобы убедиться, что он делает то, что вы хотите.
Хотя это, возможно, не лучшее решение для этого конкретного случая использования, также работает
for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done
. Мы можем сделать некоторые хитрости с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), заканчивая:
for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в дополнение к переименованию файлов, например, регистрировать имена, которые были изменены, или даже просто сделать сухой прогон, чтобы убедиться, что он делает то, что вы хотите.
Хотя это, возможно, не лучшее решение для этого конкретного случая использования, также работает
for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done
. Мы можем сделать некоторые хитрости с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), заканчивая:
for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в дополнение к переименованию файлов, например, регистрировать имена, которые были изменены, или даже просто сделать сухой прогон, чтобы убедиться, что он делает то, что вы хотите.
Хотя это, возможно, не лучшее решение для этого конкретного случая использования, также работает
for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done
. Мы можем сделать некоторые хитрости с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), заканчивая:
for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в дополнение к переименованию файлов, например, регистрировать имена, которые были изменены, или даже просто сделать сухой прогон, чтобы убедиться, что он делает то, что вы хотите.
Хотя это, возможно, не лучшее решение для этого конкретного случая использования, также работает
for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done
. Мы можем сделать некоторые хитрости с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), заканчивая:
for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в дополнение к переименованию файлов, например, регистрировать имена, которые были изменены, или даже просто сделать сухой прогон, чтобы убедиться, что он делает то, что вы хотите.
Хотя это, возможно, не лучшее решение для этого конкретного случая использования,
для i в * .JPEG; do mv "$ i" "$ (basename" $ i ".JPEG) .jpeg"; сделано
тоже произведение. Мы можем сделать некоторую сложность с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), в результате получим:
для i в * .JPEG; do mv "$ i" "$ {i %%. JPEG} .jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в additon для переименования файлов, например, для регистрации того, какие имена были изменены, или даже просто сделать сухой ход, чтобы убедиться, что он делает то, что вы хотите.
Хотя это, возможно, не лучшее решение для этого конкретного случая использования,
для i в * .JPEG; do mv "$ i" "$ (basename" $ i ".JPEG) .jpeg"; сделано
тоже произведение. Мы можем сделать некоторую сложность с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), в результате получим:
для i в * .JPEG; do mv "$ i" "$ {i %%. JPEG} .jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в additon для переименования файлов, например, для регистрации того, какие имена были изменены, или даже просто сделать сухой ход, чтобы убедиться, что он делает то, что вы хотите.
.
соответствует любому символу (за некоторыми исключениями), поэтому точка должна быть экранирована в регулярном выражении \. JPEG $
.
– Lekensteyn
12 June 2011 в 01:56
для i в * .JPEG; do mv $ i $ (basename $ i .JPEG) .jpeg; сделано
– crazy2be
12 June 2011 в 04:43
rename
недоступен. Кроме того, $ (basename $ i .JPEG)
можно заменить на $ {i %%. JPEG}
(расширение bash)
– Lekensteyn
12 June 2011 в 13:36
Используйте программу Perl rename
, которая установлена по умолчанию:
rename '/ \. JPEG $ /. jpeg /' * .JPEG
Первый аргумент - это регулярное выражение Perl, сопоставляющее имена файлов, заканчивающиеся на .JPEG
, и заменяет его на .jpeg
.
Второй аргумент выбирает файлы, которые должны быть сопоставлены, в вашем случае каждый файл в текущем каталоге, заканчивающийся на .JPEG
. Конечно, вы могли бы указать другое место:
rename '/ \. JPEG $ /. Jpeg /' ~ / Pictures / *. JPEG
Другие ответы, которые я видел:
rename s / .JPEG $ /. Jpeg / *
- это также будет переименовывать файлы типа StupidJPEG
to Stupi.jpeg
, потому что точка соответствует любому символу. .JPEG $
- это регулярное выражение rename 's / \. JPEG $ / \. jpeg /' *
- работает, но он менее эффективен потому что он передает все файлы в текущем каталоге на rename
. rename -n 's / .JPEG $ /. jpeg /' * .JPEG
- опция -n
будет показывать переименованные файлы, фактически не переименовывая их («сухой ход»). Поскольку *. JPEG
соответствует файлам, отмеченным только с помощью .JPEG
, проблема с точкой-совпадениями здесь отсутствует. .
соответствует любому символу (за некоторыми исключениями), поэтому точка должна быть экранирована в регулярном выражении \. JPEG $
.
– Lekensteyn
12 June 2011 в 01:56
для i в * .JPEG; do mv $ i $ (basename $ i .JPEG) .jpeg; сделано
– crazy2be
12 June 2011 в 04:43
rename
недоступен. Кроме того, $ (basename $ i .JPEG)
можно заменить на $ {i %%. JPEG}
(расширение bash)
– Lekensteyn
12 June 2011 в 13:36
Для этого есть инструмент:
sudo apt-get install renameutils или нажмите renameutils
(если он еще не установлен)
, где вы можете сделать (из команды line):
rename s/\.JPEG$/\.jpeg/ *.JPEG
Нашел секунду после публикации:
rename 's/\.JPEG$/.jpeg/' *
Хотя это, возможно, не лучшее решение для этого конкретного случая использования, также работает
for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done
. Мы можем сделать некоторые хитрости с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), заканчивая:
for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в дополнение к переименованию файлов, например, регистрировать имена, которые были изменены, или даже просто сделать сухой прогон, чтобы убедиться, что он делает то, что вы хотите.
Используйте команду rename.
Что-то вроде этой команды должно работать (для всех файлов, которые заканчиваются на .JPEG, меняйте .JPEG на .jpeg). Это не так, как нужно, и это часто вызывает путаницу, потому что это было специально создано с переименованием изображений.
rename -n 's / .JPEG $ /. jpeg /' * .JPEG
Выполнение параллельных операций становится все более важным, поэтому я рекомендую:
parallel mv {} {.}.jpg ::: *.JPG
Эта утилита по умолчанию не установлена.
Если вы ищете хорошее графическое решение и не хотите гадать со сложными аргументами командной строки, для переименования файлов имеется отличный скрипт Nautilus. Он имеет простой интерфейс и множество опций.
Доступно здесь: http://gnome-look.org/content/show.php/Renamer?content=87601
Нашел секунду после публикации:
rename 's/\.JPEG$/.jpeg/' *
Хотя это, возможно, не лучшее решение для этого конкретного случая использования, также работает
for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done
. Мы можем сделать некоторые хитрости с bash, чтобы немного повысить эффективность (избегая при вызове дополнительного подпроцесса во внутреннем цикле), заканчивая:
for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done
Это решение наиболее полезно, если вы хотите сделать что-то еще в дополнение к переименованию файлов, например, регистрировать имена, которые были изменены, или даже просто сделать сухой прогон, чтобы убедиться, что он делает то, что вы хотите.
Если вы ищете хорошее графическое решение и не хотите гадать со сложными аргументами командной строки, для переименования файлов имеется отличный скрипт Nautilus. Он имеет простой интерфейс и множество опций.
Доступно здесь: http://gnome-look.org/content/show.php/Renamer?content=87601
Выполнение параллельных операций становится все более важным, поэтому я рекомендую:
parallel mv {} {.}.jpg ::: *.JPG
Эта утилита по умолчанию не установлена.
Используйте команду rename.
Что-то вроде этой команды должно работать (для всех файлов, которые заканчиваются на .JPEG, меняйте .JPEG на .jpeg). Это не так, как нужно, и это часто вызывает путаницу, потому что это было специально создано с переименованием изображений.
rename -n 's / .JPEG $ /. jpeg /' * .JPEG
Для этого есть инструмент:
sudo apt-get install renameutils или нажмите renameutils
(если он еще не установлен)
, где вы можете сделать (из команды line):
rename s/\.JPEG$/\.jpeg/ *.JPEG
Нашел секунду после публикации:
rename 's/\.JPEG$/.jpeg/' *
Если вы ищете хорошее графическое решение и не хотите гадать со сложными аргументами командной строки, для переименования файлов имеется отличный скрипт Nautilus. Он имеет простой интерфейс и множество опций.
Доступно здесь: http://gnome-look.org/content/show.php/Renamer?content=87601
Выполнение параллельных операций становится все более важным, поэтому я рекомендую:
parallel mv {} {.}.jpg ::: *.JPG
Эта утилита по умолчанию не установлена.
Используйте команду rename.
Что-то вроде этой команды должно работать (для всех файлов, которые заканчиваются на .JPEG, меняйте .JPEG на .jpeg). Это не так, как нужно, и это часто вызывает путаницу, потому что это было специально создано с переименованием изображений.
rename -n 's / .JPEG $ /. jpeg /' * .JPEG
Для этого есть инструмент:
sudo apt-get install renameutils или нажмите renameutils
(если он еще не установлен)
, где вы можете сделать (из команды line):
rename s/\.JPEG$/\.jpeg/ *.JPEG
Нашел секунду после публикации:
rename 's/\.JPEG$/.jpeg/' *
Если вы ищете хорошее графическое решение и не хотите гадать со сложными аргументами командной строки, для переименования файлов имеется отличный скрипт Nautilus. Он имеет простой интерфейс и множество опций.
Доступно здесь: http://gnome-look.org/content/show.php/Renamer?content=87601
Выполнение параллельных операций становится все более важным, поэтому я рекомендую:
parallel mv {} {.}.jpg ::: *.JPG
Эта утилита по умолчанию не установлена.