У меня в домашнем каталоге есть эти два файла -
hello_newest.txt
goodbye_newest.txt
Я хочу переименовать их так, чтобы «самая новая» часть имени файла была полностью удалена, чтобы они были доступны hello.txt
иgoodbye.txt
Это команда, которую я запускаю -
find -name "*.txt" -exec rename 's/newest//i' {} ";"
Он не выдает ошибку и ничего не делает с файлами после того, как я запускаю эту команду. Я проверилhttp://www.computerhope.com/unix/rename.htmи судя по некоторым из приведенных примеров, похоже, что это должно работать.
Я уверен, что это что-то простое, но что я упускаю?
решение1
Похоже, это была версия Redhat, на которой мы были. Команда -
rename _newest '' *
Кажется, это позволяет достичь тех же целей.
Спасибо за помощь.
решение2
Другой синтаксис. Но у меня сработало:
for i in *.txt; do mv "$i" "`echo $i | sed 's/_[^.]*//'`"; done
Все текстовые файлы находятся с помощью цикла for, а затем символы после подчеркивания удаляются с помощью sed.