Невозможно удалить окончание ^ I из текстового файла

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

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -delete -print >logfile

Примечание: Порядок параметров -delete и -print важен. Вторая опция будет применяться только в том случае, если первая вернет истину, т.е. если первая опция -delete не смогла удалить файл, то его имя не будет выведено на стандартный вывод. Если вы сначала поместите -print , тогда имя файла будет помещено в стандартный вывод независимо от того, действительно ли -delete может удалить файл.

Note2 : Мне пришлось убрать скобки и вертикальную черту, чтобы регулярное выражение работало по умолчанию с помощью утилиты find моей системы. В качестве альтернативы вы можете указать, например, от -regextype до posix-egrep . В любом случае, сначала стоит попробовать команду найти без опции -delete , чтобы проверить, правильно ли она находит файлы:

find /var/www/html -type f -regex ".*/.*\.\(png\|jpg\)" -print
1
15.06.2018, 00:18
2 ответа

^I probablemente no indica un signo de intercalación seguido de una I, sino que es una representación del carácter compuesto al presionar Ctrl + I . Este carácter en realidad tiene un atajo en la mayoría de los teclados, a saber Tabulador . Si fuera catal archivo, probablemente vería algo como:

line1    $
line2    $
line3    $

A menos que, sea lo que sea que esté usando y muestre literal ^Is, también muestre el final de la línea con un $visible.

Puedes usar trpara eliminarlos si quieres, aunque:

$ cat file | tr -d '\t'

\ten este caso es una secuencia mágica que es una manera fácil de representar un carácter de tabulación en varias herramientas comunes (incluyendo, útilmente,tr).

dos2unixno hizo nada con las pestañas porque son idénticas entre todas las plataformas que la herramienta se usa para "traducir" hacia y desde.

0
27.01.2020, 23:32

Entonces su archivo se verá así usando odocat -A

$ od -c foo
0000000   l   i   n   e   1  \t  \n   l   i   n   e   2  \t  \n   l   i
0000020   n   e   3  \t  \n
0000025
$ cat -A foo
line1^I$
line2^I$
line3^I$
$

Para eliminar todos los^I(Tabulador)caracteres, puede usar sed -i 's/\t//g' foo. Para solo eliminar las pestañas al final de una línea, se usased -i 's/\t$//' foo

$ sed -i 's/\t//g' foo
$ od -c foo
0000000   l   i   n   e   1  \n   l   i   n   e   2  \n   l   i   n   e
0000020   3  \n
0000022
$ cat -A foo
line1$
line2$
line3$
$
2
27.01.2020, 23:32

Теги

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