Как скоро Linux заметит, что диск был отсоединен? И может ли это быть быстрее?

grep -ie' p[^, ]* *,[^,]*$'  \
<<""
AABBA, 10050, Tom marc Peter , POR
BBBAC, 10051, Eva braun, AUS
CCAHA, 10052, Jon murry , UDD
GGHAN, 10053, Taler yon, AGG
IIUSA, 10054, Raff paleen , EUS
UUGAS, 10055, Bara enty, ESP

AABBA, 10050, Tom marc Peter , POR
IIUSA, 10054, Raff paleen , EUS
6
01.08.2018, 20:45
4 ответа

Это будет работать, если мы предположим, что все до первого подчеркивания является префиксом.

for f in *.png; do
    new=$(echo "$f" | sed -r 's/^([^_]*)_(.*)\.(.*)$/\2_\1.\3/');
    echo "Renaming: $f => $new";
    #mv $f $new
done

Удалите #перед mv, если результат вас устраивает.


С prenameбыло бы немного проще:

prename -n 's/^([^_]*)_(.*)\.(.*)$/$2_$1.$3/'

Если префиксом всегда является t_, измените его на этот шаблон:

for f in t_*.png; do
    new=$(echo "$f" | sed -r 's/^t_(.*)\.(.*)$/\1_t.\2/');
    echo "Renaming: $f => $new";
    #mv $f $new
done
4
27.01.2020, 20:20

Учитывая шаблон имени файла t_00xx_000xxx.png, где x может быть любым одиночным символом, следующий цикл использует ?подстановочный символ вместо переменных символов. Цикл выбирает только файлы, начинающиеся с t_и заканчивающиеся на .png. Он использует расширение параметра, чтобы удалить начальный t_, затем извлекает нужную подстроку, чтобы переместить _tв желаемую позицию.

for f in t_00??_000???.png
do
  echo mv -- "$f" "${f:2:11}_t.png"
done

Для некоторых придуманных -имен файлов пример вывода будет:

mv t_0011_000111.png 0011_000111_t.png
mv t_0012_000345.png 0012_000345_t.png
mv t_00xx_000xxx.png 00xx_000xxx_t.png

Удалите часть echo, если результаты выглядят правильно.

6
27.01.2020, 20:20

В синтаксисе sh:

for f in t_*.*; do
  dest=${f#t_}
  dest=${dest%.*}_t.${dest##*.}
  echo mv -i -- "$f" "$dest"
done
5
27.01.2020, 20:20

Если SuSE SLES12 имеет команду mcp/mmv в своем репозитории, тогда будет просто использоватьmmv:

mmv 't_*.png' '#1_t.png'

Или, если проблема заключалась в количестве символов и конкретных цифр, вы могли бы уточнить, например:

mmv 't_00??_000???.png' '00#1#2_000#3#4#5_t.png'

Первым аргументом для mmv является источник со стандартными подстановочными знаками *и ?. Второй аргумент — это пункт назначения, в котором#1 заменяется содержимым, которому соответствует первый подстановочный знак,#2 — содержимым, которому соответствует второй подстановочный знак и т. д.

Пример:

% ls -1
t_0011_000037.png
t_0011_000038.png
t_0011_000039.png
t_0022_000001.png
t_0022_000002.png

% mmv 't_*.png' '#1_t.png'

% ls -1
0011_000037_t.png
0011_000038_t.png
0011_000039_t.png
0022_000001_t.png
0022_000002_t.png
5
27.01.2020, 20:20

Теги

Похожие вопросы