Попытка удалить rm файл с ( в его имени

Использование GNUsedкомандыevalue :

sed 's#^#./main -o &#e' test.txt

И если форматирование неправильное, просто добавьте перед этим какой-нибудь код. Например, если формат первой строки должен быть "./main -o 27 8d ca 53 f9 60 14 be ", это будет работать:

sed 's/../& /g;s#^#./main -o &#e' test.txt
0
26.03.2020, 11:38
1 ответ

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

rm -i ~olb/'Email Thu, 19 Mar 2020 18:49:16 +0000 =?UTF-8?Q?Update_from_GOV.UK_=E2=80=93_Coronavirus_(COV?= =?UTF-8?Q?ID-19)_guidance_for_the_charity_sector?='

В качестве альтернативы можно использовать шаблон подстановки имени файла, который однозначно соответствует имени файла,

rm -i ~olb/Email*COV*guidance_for_the_charity_sector*

Обратите внимание, что вы должны быть уверены, что это соответствует только одному файлу, который вы хотите удалить. Вы можете проверить это, заменив rmв приведенной выше команде на printf '%s\n'или echoи проверив результат этой измененной команды.

Я также использую здесь rm -i, чтобы дать вам интерактивную подсказку для каждого удаления.

Вы можете использовать тот же подход, чтобы переименовать файл в более разумное имя:

mv -i ~olb/Email*COV*guidance_for_the_charity_sector* /home/olb/COV_guidance_for_the_charity_sector.txt
13
19.03.2021, 02:32

Теги

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