Во-первых, я решил полностью удалить dradis (и kali-linux-full), проблемный пакет( s):
apt-get purge dradis
Это не удаляет каталог /etc/dradis/
, поэтому я сделал его резервную копию (не было необходимости, но лучше перестраховаться, извините) и уничтожил маленького ублюдка:
mkdir backup-etc-dradis && rsync -avrX /etc/dradis backup-etc-dradis && rm --recursive /etc/dradis/
Все еще есть некоторые остаточные следы dradis, застрявшие в подушках дивана, и еще что-то (например, пользователь «dradis»), но, к счастью, наш менеджер пакетов имеет довольно высокую «способность» «получать» такого рода проблемы и решать их. .. ;)
apt-get install kali-linux-full
Использование утилиты Perl rename
:
rename 's/_0+/_/' table_subset_*
Это заменяет _
, за которым следует один или несколько нулевых символов, только на _
.
Описанное выше работает с утилитой rename
, иногда называемой prename
, которая поставляется с Perl. Некоторые дистрибутивы устанавливают утилиту rename
из утилиты util-linux
, которая совершенно несовместима.
Если переименование Perl еще не установлено в вашей системе, способы его установки можно найти здесь
Простой один лайнер будет (запускаться из рассматриваемой папки):
rename 's/(?<=table_subset_)([0])+//'./*
Но если запустить извне:
rename 's/(?<=table_subset_)([0])+//' /path/to/files/folder/*
Ради чистоты...
Чистый bash
ответ:(спасибо @steeldriver)
shopt -s extglob
for file in table_subset_0*; do
mv "$file" "${file/_+(0)/_}"
done
Чистый ответ GNU sed
:
ls | sed -n -r '
/^(table_subset_)0+(.*)/ ! d
s//mv & \1\2/
e
'
Чистый ответ GNU awk
:
ls | awk -F '_0+' 'NF > 1 { system("mv " $0 " " $1 "_" $2) }'
Вы можете сначала использовать awk
вместо того, чтобы использовать split
и использовать другой инструмент rename
.
awk 'NR%5000==1{ file=sprintf("table_subset_%d", ((++c)) )} {print >file}' geno_file
это разделит файл geno_file
на блоки файлов размером 5 КБ с числовым суффиксом без начальных нулей, но вы можете свободно использовать 0Xd
в. выше с 4 цифрами длины, напримерsprintf("..._%04d", ((++c)) )
Или, если вы хотите разделить ваш geno_file
только на 9 частей выходного файла, сначала с split
и правильным использованием его параметров, чтобы установить числовой суффикс с 1 (по умолчанию 0 )и-a N
(генерируют суффиксы длины N (по умолчанию 2 )), вы можете просто использовать их следующим образом:
split -a 1 --numeric-suffixes=1 -l TOTALLINES/9HERE table_subset_
Но все же не забывайте awk
решение.
В дополнение к решению @John1024, вот похожее решение, в котором используются стандартные команды Bash:
for file in table_subset_*; do
new_name=$(echo "$file" | sed -E -e 's/_0+/_/')
mv "$file" "$new_name"
done
Принцип тот же. Мы перебираем все файлы и заменяем _0
на _
.