Использование команды sed для замены имен пробелами

Вы можете использовать имена "disk/by-id" в /etc/fstab, см.

ls -l /dev/disk/by-id

. Обратите внимание, что эти имена устройств также могут использоваться в других файлах. (конфиги initrd, grub). Таким образом, вы можете обновить конфигурацию grub и заново создать initrd.

0
10.01.2017, 15:11
4 ответа

Удаление списка этих имен с добавлением суффикса после последнего пробела:

sed 's/.* //'

Но если это пара файлов в каталоге, проще использовать переименовать :

rename 's/^.* //' *
2
28.01.2020, 02:15

Другое решение с использованием вырезать и sed :

cat filename.txt | cut -d'-' -f2- |  sed 's/^ //g'

Еще одно решение только с вырезать (и только в том случае, если имена состоят из имени и фамилии, разделенных пробелом):

cat filename.txt | cut -d' ' -f4-
1
28.01.2020, 02:15

С bash или ksh , предполагая, что файлы находятся в текущем каталоге:

for name in ./"Nora Hmann - sub-"??.zip; do
  newname="./${name##* }"
  mv -i "$name" "$newname"
done

Расширение параметра $ {name ## *} удалит все из $ name до (включительно) последнего символа пробела .

Если имя в начале имени файла не зафиксировано, то следующий файл захватит все Zip-файлы и попытается переименовать их таким же образом:

for name in ./*.zip; do
  newname="./${name##* }"
  mv -i "$name" "$newname"
done

Я решил использовать mv -i в этих примерах, так что вы должны интерактивно подтверждать любое переименование, которое приведет к перезаписи уже существующего файла.

Другой способ сделать это - просто пропустить файлы, которые в противном случае перезаписали бы существующие файлы:

for name in ./*.zip; do
  newname="./${name##* }"
  if [[ ! -e "$newname" ]]; then
    mv "$name" "$newname"
  else
    printf 'Not renaming "%s", new filename exists\n' "$name" >&2
  fi
done
1
28.01.2020, 02:15

Используйте следующую команду:

sed -ie "s / Nora \ Hmann \ \ - \ // g" stack

перед:

Nora Hmann - sub-01.zip
Nora Hmann - sub-02.zip
Nora Hmann - sub-03.zip
Nora Hmann - sub-04.zip
Nora Hmann - sub-05.zip
Nora Hmann - sub-06.zip

после:

sub-01.zip
sub-02.zip
sub-03.zip
sub-04.zip
sub-05.zip
sub-06.zip

Чтобы зациклить его (я предполагаю, что вы выполняете свой сценарий bash из каталога, где находятся все файлы, которые будут изменены):

for i in `ls -w1`
do
 sed -ie "s/Nora\ Hmann\ \-\ //g" /path/to/$i
done
2
28.01.2020, 02:15

Теги

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