Как удалить/заменить общий суффикс списка имен файлов в Linux?

Ответы на все ваши вопросы

  1. Why is cron/pam_env/pam_unix trying to open that file in the first place?

См. ОШИБКА #646015 . В некоторых случаях (, например, связанных с локалью ), этот файл считается устаревшим. Но он по-прежнему используется во всей системе -, и каждый раз, когда он отсутствует, создается журнал.

  1. If they legitimately expect it, why isn't it there?

Возможно, ошибка все-таки не исправлена. Steve Langasek(BUG #646015)сказал, что это так, и новые системы должны создавать этот файл, используя postinstскрипты, точно так же, как старые обновляемые системы уже должны иметь этот файл.

  1. What should I do about this?
  • Запустите dpkg-reconfigure libpam-modulesи посмотрите, создаст ли он файл с помощью своего сценария postinst.
  • Если это не работает, создайте файл вручную с помощьюtouch /etc/environment

Также интересно сообщить о вашей проблеме в проект Devuan с подробным описанием проблемы и вашими настройками, поскольку эта проблема была решена до того, как произошло ответвление Debian/Devuan.

-1
28.01.2021, 12:21
2 ответа

В зависимости от системы поведение команды renameможет сильно различаться. Подробности см. на странице man.

Первый тип проще, и вы просто говорите ему, какую строку заменить и на какую строку заменить:

rename _001.f ""  *_001.f.txt
rename _001.f _rt *_001.f.txt

Второй тип использует замену Perl:

rename 's/_001\.f//'    *_001.f.txt
rename 's/_001\.f/_rt/' *_001.f.txt

Или вы можете использовать цикл и расширение параметров, чтобы создать новые имена самостоятельно:

for f in *_001.f.txt ; do
    mv "$f" "${f%_001.f.txt}".txt
    mv "$f" "${f%_001.f.txt}"_rt.txt
done

%означает «Удалить справа», #используется аналогично для удаления слева.

4
18.03.2021, 22:34

Я не уверен, правильно ли я Вас понял. Следующий код переименовывает файлы «Пример» в файлы «Переименование» :

.
for f in *.txt; do mv "$f" "$(echo "$f" | sed -e 's/001.f/rt/')";done
1
18.03.2021, 22:34

Теги

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