Как переименовать все файлы в каталоге в определенный формат? [дубликат]

Если я правильно понял ваше последнее утверждение, у вас есть только один ssd-диск на 120 ГБ, на котором вы хотите разместить 3 раздела по 40 ГБ для l2ARC и 40x2 для Zil. зеркало.

Есть несколько моментов, на которые следует обратить внимание:

  • Даже если в конечном итоге это сработает, ZFS предпочитает использовать весь диск.

  • Что вы надеетесь получить, используя зеркальное отображение раздела на том же диске? Потому что вы не получите ни производительности, ни избыточности.

Я советую указать 120 ГБ как l2arc, потому что:

  • вы обычно читаете намного больше, чем пишете

  • Это повысит долговечность ваших механических дисков, не обращаясь к ним.

Кроме того, вы не можете быть в безопасности с неизбыточным Zil, в то время как это не имеет никакого значения для L2arc, поскольку у вас уже есть данные в вашем пуле.

Просто для информации, если у вас было 2 ssd, есть случаи, когда их использование в качестве редонированного зила без l2arc может быть оправдано: Если вы получаете доступ только к небольшой части своего набора данных и если у вас достаточно оперативной памяти, этого достаточно, чтобы заметить, что у вас уже есть большой коэффициент совпадений, например, с использованием arcstat.

0
20.01.2017, 23:30
2 ответа

Использование расширения параметра оболочки

$ for f in *.log; do g="${f/#file_/}"; echo mv -- "$f" "files_${g%%_*}.log"; done
mv -- file_948_of_2000_push_data_12345.log files_948.log
mv -- file_950_of_2000_push_data_12345.log files_950.log

Использование основанного на perl prename или команды переименования

$ prename -n -- 's/^(.*?)_(.*?)_.*\.log$/$1s_$2.log/' *.log
file_948_of_2000_push_data_12345.log renamed as files_948.log
file_950_of_2000_push_data_12345.log renamed as files_950.log

Использование mmv

$ mmv -n '*_*_*.log' '#1s_#2.log'
file_948_of_2000_push_data_12345.log -> files_948.log
file_950_of_2000_push_data_12345.log -> files_950.log

Удалите -n или echo в зависимости от ситуации.

2
28.01.2020, 02:25

Вы можете попробовать эту команду:

  ls -C1 file*log |  perl -ane 'chomp;$d=$_; s/^(\w+?)_(\d+?)_.*/$1s_$2.log/; print "mv -v $d $_\n";' | bash

Сценарий perl генерирует команду для перемещения. Оставьте канал до bash, чтобы увидеть, делает ли команда то, что вы хотите. Однострочный perl считывает список файлов из стандартного ввода и соответствует первому слову, за которым следует символ подчеркивания, за которым следует группа цифр, а затем выводит команду перемещения. Если он вам нужен для чего-то другого, кроме linux, perl может просто переименовать файл за вас. Предостережения. Однострочник необработанный и не обрабатывает имена файлов с путем.

1
28.01.2020, 02:25

Теги

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