Я хотел бы переименовать расширение .tar?h=ocdist105&=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files только для .tar. Я попробовал команду
rename 's/\.tar?h=ocdist105&p=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files$/.tar/' *.tar?h=ocdist105&p=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files
, но, похоже, она не работает. У меня 550 файлов с этим расширением. Может кто-нибудь мне помочь? Благодаря
Возможно, вы сможете выполнить это с помощью find, exec и rename. Я уверен, что это будет работать на Ubuntu, не требуя ничего особенного.
#!/bin/bash
find /path/to/files -name "*.tar?h=ocdist105&=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files" -exec rename .tar?h=ocdist105&=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files .tar {} \;
Это не было протестировано, но должно работать. Вот как выглядит команда при попытке переименовать расширение .css на .txt, например; для ясности.
#!/bin/bash
find /path/to/files -name "*.css" -exec rename .css .txt {} \;
Использовать
Поместите вышеуказанный контент в файл. Предоставьте исполняемые разрешения для файла и запустите его.
Использовать
Вы можете проверить приведенную выше команду, чтобы увидеть, какой результат будет без фактических изменений добавив -n после rename.
#!/bin/bash
find /path/to/files -name "*.css" -exec rename -n .css .txt {} \;
Оба rename и ваша оболочка рассматривают некоторый символ как специальный. Вы должны должным образом избегать их.
Эта команда должна выполнить работу:
rename 's/\.tar\?h\=ocdist105\&\=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files$/.tar/' *.tar\?h\=ocdist105\&\=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files
Если вы хотите знать, как я сгенерировал эту команду, просто знайте, что табуляция является полезной друг, столкнувшись с такими проблемами.