Вы не должны пытаться проанализировать вывод ls
. вместо этого необходимо найти способ непосредственно получить время.
если находка -printf
опция не работает на Вас, у Вас, вероятно, есть "неправильная" версия find
установленный в Вашей системе (на моем Debian-поле, find
часть findutils-4.4.2
пакет)
альтернатива использует stat
:
$ stat -c %x /path/to/file.txt
2013-12-09 15:40:29.000000000 +0100
$
вместе с find
, Вы использовали бы что-то как:
find $dirpath -type f -name $fname1 -exec stat -c %x \{\} \;
также отметьте, то использование, пишущий результат в переменную с чем-то как tim=$(find ...)
даст Вам несколько результатов, если у Вас, окажется, будет несколько названных файлов ${fname}
во всех подкаталогах ${dirpath}
Вместо того, чтобы найти трубопровод в петле, можно было бы пройти через Промежуточный файл. Это гарантирует, что шаг поиска и Шаг перекручивания происходит последовательно, без перекрытия. Что-то вроде следующее (я изменил ваше выражение для краткости):
find \( -name '*.mkv' -o -name '*avi' \) >files
<files while IFS= read file
do
ffmpeg -i "$file" "$target" && rm -f "$file"
done
Обратите внимание, что это все еще не совсем безопасно; использование find -exec
было бы проще, если бы ваши требования не включали запуск find
строго перед первым вызовом на ffmpeg
. С помощью этого требования, используя find -print0
вместе с xargs или параллельным GNU, можно было бы выполнить эту работу.
Причина, по которой код не работает должным образом, является несоответствием и или групп в исходном . Найти
Команда:
find * \( -name '*.mkv' -o -name '*avi' -o -name '*mp4' -o -name '*flv' -o -name '*ogg' -o -name '*mov' ! -name '*-[900p-by-ZiriusPH].mkv' \) -print
Привязка для параметров - для печати Файлы, сопоставляемые для
Последнее условие будет верно для многих файлов, которые я подозреваю, не то, что вы хотели. Если вы переместите и не состоянию за пределами скоб или условий, которые вы обнаружите, что это работает, как вы ожидаете.
find * \( -name '*.mkv' -o -name '*avi' -o -name '*mp4' -o -name '*flv' -o -name '*ogg' -o -name '*mov' \) ! -name '*-[900p-by-ZiriusPH].mkv' -print