Также обратите внимание на это, если Вы просто хотите искать тот, соответствующий regex, GNU grep с --color
будет работать — просто передают Ваш по каналу tail
вывод через это.
Если Вы используете Bash или другую совместимую с POSIX оболочку:
for f in *.png; do
mv -- "$f" "${f#image}"
done
ls *png |, в то время как считано-r f; сделайте f2 = "'echo $f | sed-e's/image//'' "; $f$f2 mv;готово
ls
просто призывает к проблеме. read
должен быть read -r
. все подстановки переменных должны быть в двойных кавычках.
– Gilles 'SO- stop being evil'
24.08.2010, 03:20
for f in *png; do f2="$(echo "$f" | sed -e 's/image//')"; mv "$f" "$f2"; done
. Парсинг ls
ни необходимо, ни хорошая идея.
– kojiro
10.02.2014, 06:24
Мне нравится Perl так:
perl -nlE '$old=$_; s/image//; qx(mv $old $_)'
Можно также использовать тот же шаблон для других задач как копирование файлов к другому каталогу:
perl -nlE '$old=$_; s(image)(/path/to/new/dir/); qx(mv $old $_)'
Я обычно использую хороший и простой mmv (страница справочника) утилита для этого варианта использования:
$ mmv "image*.png" "#1.png"
выполнит Вашу задачу.
#1
в целевом шаблоне будет заменен с любыми соответствиями подстановочный знак в исходном шаблоне. Это также работает на несколько подстановочных знаков и может использоваться, например, для изменения порядка частей имен файлов. Можно также легко сделать более сложные вещи как преобразование нижнего регистра к прописным буквам.
Удостоверьтесь, что защитили шаблоны от оболочки путем заключения в кавычки.
Оболочка zsh имеет мощный пакет, переименовывают названную команду zmv
.
Сначала необходимо включить zmv
управляйте следующим образом (это может войти в Ваш ~/.zshrc
).
autoload zmv
Базовый синтаксис zmv PATTERN REPLACEMENT
. Шаблон является выражением шарика оболочки. Части шаблона могут быть окружены круглыми скобками. Текст замены может содержать $1
, $2
, и т.д. относиться к Энной заключенной в скобки группе в шаблоне. Например:
zmv 'image(*.png)' '$1'
Можно также попросить, чтобы zsh автоматически определил $1
, $2
, и т.д. соответствовать подстановочным символам в шаблоне:
zmv -w 'image*.png' '$1.png'
На Debian и производных, Perl rename
работы так же к sed
как это:
rename -v 's/image//' *.png
Существует также rename
от util-linux
это работает как это, вместо этого:
rename image '' *.png
rename
программа прибыла из распределения Perl в качестве примера. Debian и Ubuntu поставляют его как /usr/bin/rename
. Другие варианты Unix не могут обеспечить его или могут обеспечить совершенно другое /usr/bin/rename
.
– Gilles 'SO- stop being evil'
24.08.2010, 10:17
rename
возьмите от к заменяющему шаблону: rename [options] <expression> <replacement> <file>...
– melds
29.12.2015, 20:42
легкий рекурсивно вызывают выбор image*png файлы, и не принимает потребности иметь дело с новой строкой в именах файлов
find . -name "image*.png" | while read f; do mv -v "$f" "$(echo "$f" | sed -e 's/^\.\/image//' - )"; done
Безопасный, может иметь дело с пробелами, новыми строками, обратными косыми чертами и чем-либо еще:
find . -name "image*.png" | while IFS= read -r f; do
mv -v "$f" "$(echo "$f" | sed -e 's/^\.\/image//' - )";
done
Чтение имен от find
команда.
find . -maxdepth 1 -type f -name 'image*png' | while IFS= read -r f; do
mv -v "$f" "$(echo "$f" | sed -e 's/^\.\/image//' - )"
done
Чтение имен из файла
while IFS= read -r f; do mv -v "$f" "$(echo "$f"|sed -e 's/^\.\/image//' - )"; done < flist
Использование sed для переименования
for i in image*jpg
do
mv -v "$i" "$(echo "$i" | sed -e 's/^\.\/image//' - )"
done
Команда qMV
. Из RenaMeutils
открывает редактор, показывающий список имена файлов с двумя колониями, разделенными вкладкой. Каждая строка показывает одну из имена файлов, то же самое в обоих столбцах. Правая колонна представляет новые имена файлов.
Вносить изменения, отредактируйте имена на правой стороне. В этом примере :% S / ...
или визуальный режим блока полезны.
$ qmv *.png
в редакторе:
image0001.png image0001.png
image0002.png image0002.png
image0003.png image0003.png
~
~
~
~
"/tmp/user/1000/qmvxWyVMs" 3L, 93C
Редактирование имен в правом столбце:
(Извлечение изображения
префикс префикс из всех линий с использованием режима визуального блока)
image0001.png 0001.png
image0002.png 0002.png
image0003.png 0003.png
~
~
~
~
:wq
Журнал переименования:
image0001.png -> 0001.png
image0002.png -> 0002.png
image0003.png -> 0003.png
(например. Ubuntu: APT-Get Установить RenaMeutils
)
Вы можете использовать этот инструмент: rnm ( веб-страница )
В вашем случае команда будет выглядеть так:
rnm -rs '/^image//' *.png
Вы можете найти больше примеров / документов здесь .
Для Windows и Linux подойдет этот Perl-скрипт ; в этом случае:
$ rnm -l 's/^image//' '*.png'
Сценарий мог запускаться рекурсивно по каталогам и даже добавлять счетчик ко всем из них:
$ rnm -r 's/^/$counter./' '/\.png$/'
UTF -8 символов также корректно обрабатываются как в Windows, так и в Linux.
Используйте mv
с Расширение скобки внутри контура.
for N in {1..100}; do
mv {,new_}file$N.txt
done
Перед запуском команды mv
оболочка расширит ее до такой команды для каждого файла, где $N
заменит соответствующий порядковый номер.
mv file$N.txt new_file$N.txt
, поэтому к имени файла добавляется префикс .
-121 ---124642 -Попробуйте brename (https://github.com/shenwei356/brename), практичный межплатформенный -командный инструмент -линейный инструмент для безопасного пакетного переименования файлов/каталогов с помощью регулярных выражений (, поддерживающий Windows, Linux и OS X ).
@patrickDurusau сказал:
Linux has a variety of batch file renaming options but I didn’t see any short-comings in brename that jumped out at me.
Характеристики:
find./ -name "*.html" -exec CMD
. Команда:
$ brename -f.png -p image
[INFO] checking: [ ok ] 'image0001.png' -> '0001.png'
[INFO] checking: [ ok ] 'image0002.png' -> '0002.png'
[INFO] checking: [ ok ] 'image0003.png' -> '0003.png'
[INFO] 3 path(s) to be renamed
[INFO] renamed: 'image0001.png' -> '0001.png'
[INFO] renamed: 'image0002.png' -> '0002.png'
[INFO] renamed: 'image0003.png' -> '0003.png'
[INFO] 3 path(s) renamed
Использование расширения раскоса оболочки:
for N in {0001..1000}; do mv "{image,}$N.png"; done
awk
, или вставьте код в файл и выполните его сawk -f that.script.file input-file
---------121 продвижение--------56616----@ChristianSeverin плохих методов и напрямую взломанного кода. Проверьте ссылки на моей странице профиля. – Wildcard 11.10.2017, 19:20