Вы можете использовать сам 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
^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 cat
al archivo, probablemente vería algo como:
line1 $
line2 $
line3 $
A menos que, sea lo que sea que esté usando y muestre literal ^I
s, también muestre el final de la línea con un $
visible.
Puedes usar tr
para eliminarlos si quieres, aunque:
$ cat file | tr -d '\t'
\t
en 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
).
dos2unix
no hizo nada con las pestañas porque son idénticas entre todas las plataformas que la herramienta se usa para "traducir" hacia y desde.
Entonces su archivo se verá así usando od
ocat -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$
$