1

Есть ли способ записать имя файла перед его удалением? Я делаю преобразование PNG в JPG и мне нужно удалить старый файл PNG, но я хотел бы сначала войти в него. ... или если бы я мог записать, что было найдено.

#!/bin/bash

PIXPATH=~/test-pix/

find $PIXPATH -type f -name '*.png' -exec mogrify -format jpg {} \;

rm -rf $PIXPATH*.png > list-of-pngs.txt

2 ответа2

2

Попробуйте этот подход:

#!/bin/bash
PIXPATH=~/test-pix/
find "$PIXPATH" -type f -name '*.png' \
  -exec mogrify -format jpg {} \; \
  -delete \
  -print \
  > list-of-pngs.txt

Я разбил его на несколько строк, чтобы сделать его более понятным, но вы можете сделать это в одной строке.

Я также сделал некоторые исправления и дополнения, чтобы обеспечить правильную работу сценариев, если, например, $ PIXPATH содержит пробелы. Кроме того, вы не rm -r для файлов.

1

Вы можете сделать несколько вещей для каждого найденного файла, например:

  • Несколько- -exec ... \;
  • -print чтобы напечатать путь
  • -delete удалить

Например:

#!/bin/bash

PIXPATH=~/test-pix/

find "$PIXPATH" -type f -name '*.png' -exec mogrify -format jpg {} \; \
  -print -delete | tee list-of-pngs.txt

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

Я использовал tee чтобы вы видели, что пишется, но вы могли бы заменить простым перенаправлением с > .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .