К сожалению, переименование
означает разные вещи в разных версиях Unix. В частности, в Fedora и, следовательно, CentOS, я полагаю, rename
будет принимать только простые строки, а не выражение perl, которое вы используете (которое будет работать в debian).
Однако, похоже, все, что вам нужно сделать, это добавить «-img4sm». перед суффиксами .jpg, .png и .gif, поэтому с вашей версией переименования попробуйте:
rename -- .jpg -img4sm.jpg *.jpg
rename -- .png -img4sm.png *.png
rename -- .gif -img4sm.gif *.gif
Всегда копируйте куда-нибудь свой каталог в качестве резервной копии на случай, если эти команды не работают так, как вы ожидаете.
При желании вы можете установить более сложный perl
скрипт переименовать
из
cpan с помощью команды cpan
, если вы уже знаете это, или просто загрузив ссылку на этой странице на tar для загрузки . Распакуйте tar и «соберите» скрипт с
tar xf rename-1.9.tar.gz
cd rename-1.9
perl Makefile.PL
make
mv bin/rename ~/bin/prename
, где последний mv
находится в некотором частном каталоге bin в вашем PATH. Используйте имя prename
, чтобы избежать путаницы с уже имеющейся у вас командой переименования.
Затем вы можете использовать это для выполнения своих действий, например:
prename -n 's/\.(jpg|png|gif)$/-mg4sm.$1/' -- *.{jpg,gif,png}
где здесь -n
означает просто показать, что произойдет, не делая этого.
Awk
solución (para orden estricto y formato de líneas de patrones cruciales):
awk 'NF == 1{
if (f) {
if (NR-n == 1 && $1 == "{")
r = r ORS $0;
else if (NR-n == 2 && $0 ~ /[a-zA-Z]+/)
print "OK" ORS r ORS $0;
}
if ($1 == "/var/log/report") {
f = 1; n = NR; r = $0
}
}n && NR-n > 2{ f = 0 }' file
La salida:
OK
/var/log/report
{
fkergfve
OK
/var/log/report
{
kfreve
OK
/var/log/report
{
jdhe
solución gnu sed
sed '
\#[[:blank:]]*/var/log/report#!d
N
/\n[[:blank:]]*{$/!d
N
/\n[[:blank:]]*[A-Za-z]*$/!d
s/.*/OK\n&/
' infile