Нужно найти пустые файлы в текущей директории и поместить в них строку "123" с текущей датой.
Интуитивно понимаю что должно быть примерно так:
find ./ -empty -type f -exec echo "`date +%d-%m-%Y ` -123" '{}' \;
но где то ошибка.
Добавить строку в пустые файлы
Модераторы: /dev/random, Модераторы разделов
- Brainsburn
- Сообщения: 950
- Статус: /
- ОС: Gentoo
- Контактная информация:
Re: Добавить строку в пустые файлы
Код: Выделить всё
find . -empty -type f | while read filename; do echo "123" >> "$filename"; done
Re: Добавить строку в пустые файлы
Ну, вы попробуйте запустить команду добавления "123", подставив вручную вместо {} какое-нибудь имя файла, и сразу поймете, где ошибка:
Код: Выделить всё
$ touch 1.tmp
$ echo "`date +%d-%m-%Y ` -123" 1.tmp
24-04-2013 -123 1.tmp
$ cat 1.tmp
$
Видите? Не хватает перенаправления вывода в файл. Чтобы его добавить в '-exec', вам придется запускать sh, а не просто echo:
Код: Выделить всё
$ find ./ -empty -type f -exec sh -euf -c 'echo "`date +%d-%m-%Y ` -123" > "$1"' sh '{}' \;
Ну, и раз уж запускается sh, можно обрабатывать нескольких файлов сразу:
Код: Выделить всё
$ find ./ -empty -type f -exec sh -euf -c 'for f; do echo "`date +%d-%m-%Y ` -123" > "$f"; done' sh '{}' \+