У меня есть код PHP, который генерирует имя файла, к которому wget будет добавлять свои журналы. Я сгенерировал более 2000 файлов, но проблема в том, что у меня возникли проблемы при работе с ними, потому что я ошибся, указав в PHP_EOL
качестве имени его имя, этот код добавится
LF/line feed/%0A
к его имени
Пример такого имени файла (когда к нему обращаются через браузер, когда он помещен в / var / www / html) http://xxxx/wget_01_a%0a.txt
обратите внимание на имя %0a
перед расширением
Я запутался и хотел бы, чтобы был пакет переименования, который будет искать по всем файлам, и если он найдет, line feed
он переименует его без перевода строки, так что это будет простоhttp://xxxx/wget_01_a.txt
Я не совсем уверен, как справиться с этим, потому что кажется, что когда я ls
намазываю все специальные символы, не ограниченные этим нежелательным символом, становится ?
, то, что я только хочу нацелиться, - это перевод строки.
\n
? Можете ли вы сделать что-то вроде эха,*.txt | od -c
чтобы мы увидели, что на самом деле там не печатный символ?\n
pastebin.com/wXCDCJjr*.txt
(что объясняет, почемуrename
он его не берет). Если вы установите два шаблона, скажем,txt
вместо$'\n'
и''
, вы получите какой-либо вывод? Печатает ли echo $ '\ n' две строки?rename $'\r' '' wget_*
это для работыОсновываясь на уже полученном ответе, я обобщил его, чтобы переименовать все файлы, содержащие перевод строки, в текущей папке и подпапке, объединив команду find с переименованием -
Здесь команда find находит все файлы, содержащие перевод строки, а команда rename заменяет каждый перевод строки в имени пробелом.
То же самое можно сделать для любых других таких проблемных символов, как возврат каретки (\ r).
источник