LINUX.ORG.RU
ФорумAdmin

Найти и скопировать один самый новый файл

 ,


2

3

Подскажите с такой операцией. Хочу сделать маленький скрипт. Вот имеется каталог, в нем время от времени генерируются новые файлы(там всегда куча файлов), я хотел бы что бы время от времени, по моему запросу, из этого каталога копировать самый новый файл(один) в свой личный каталог.

Пока ничего умнее не придумал: find /место/искомого/файла -type f -cmin -10 | xargs cp -tpv /мой/каталог/

Но эт нифига не то что хотелось бы. Гуглил, не помогло особо.

я хотел бы что бы время от времени, по моему запросу, из этого каталога копировать самый новый файл(один) в свой личный каталог.

На уроки ходи, неуч!

Если на коленке и без каталогов, то ls -t|head -n 1 покажет самый новый файл.

Radjah ★★★★★
()
Ответ на: комментарий от Deleted

Ох уже эти советчики со звездами.

ТС, НИКОГДА не используй ls, если вывод нужно использовать где-то еще. ls предназначен не для этого.

Чтобы получить самый новый файл используй скрипт

unset -v latest
for file in "$dir"/*; do
    [[ $file -nt $latest ]] && latest=$file
done
anonymous
()
Ответ на: комментарий от Radjah

я конечно новичок, но не на столько же))

мне не надо любоваться его названием, мне надо этот файл выхватить к себе в укровное место, так сказать)

sergei111
() автор топика
Ответ на: комментарий от sergei111

мне не надо любоваться его названием, мне надо этот файл выхватить к себе в укровное место

Лечи голову, лечи голову:

cp -fv "you/path/$(ls -1t you/path | head -n 1)" you/target 
Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Я не умею смотреть pipe, это разве что через strace.

А результат ls (во всяком случае GNU) меняется от того, куда направлен вывод, в доке про это написано.

Вывод $ ls -t > /tmp/tmpfile && cat /tmp/tmpfile
в общем случае совпадёт с выводом $ ls -t

mky ★★★★★
()
Ответ на: комментарий от mky

Я не умею смотреть pipe, это разве что через strace.

Мы о разном. Но тебе виднее.

Deleted
()
find -type f -printf "%T@\t%h/%f\n" | sort -r | head -n 1 | sed 's/^.*\t//g'


Универсальная конструкция: тут ты и маску можешь задать, и указать по каким каталогам и как глубоко ходить и др.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 1)
Ответ на: комментарий от mky

Простите что вмешиваюсь, Вы пытались указать на тот факт что ls меняет поведение в зависимости от направления вывода, точнее терминал или нет. Но вы сами допустили ошибку

Вывод $ ls -t > /tmp/tmpfile && cat /tmp/tmpfile
в общем случае совпадёт с выводом $ ls -t

Это утверждение как раз не верно. И даже если ошиблись и хотели написать ls -1t, то тоже сильно не факт что верно.

anc ★★★★★
()
Ответ на: комментарий от Pyzia

Из BSD мана:

-1      (The numeric digit ``one''.)  Force output to be one entry per
             line.  This is the default when output is not to a terminal.
К сожалению в GNU мане этого не написали. Но в доках есть:
‘-1’
‘--format=single-column’
List one file per line. This is the default for ls when standard output is not a terminal. See also the -b and -q options to suppress direct output of newline characters within a file name.

anc ★★★★★
()
Ответ на: комментарий от Kroz

Больше пайпов/утилит и разных... чую еще чего-то не хватает... а, понял надо все в докер обернуть.

anc ★★★★★
()
Ответ на: комментарий от anc

понял надо все в докер обернуть.

Плюсую.

Deleted
()
Ответ на: комментарий от Pyzia

If standard output is a terminal, the output is in columns (sorted vertically) and control characters are output as question marks; otherwise, the output is listed one per line[\b] and control characters are output as-is

mky ★★★★★
()
Ответ на: комментарий от anc

Хоть кто-нибудь умеет читать man до конца?

The full documentation for ls is maintained as a Texinfo manual.

И это для всех GNU утилит. По ним дока не man, а info.

mky ★★★★★
()
Ответ на: комментарий от anc

Да, не верно, пропустил «не» между «случае» и «совпадёт». Исходно речь шла о том «пошагово делать» (смотреть результат каждой команды), а я пытался объяснить, что «ls» по разному выводит в терминал и в pipe.

mky ★★★★★
()
Ответ на: комментарий от mky

Какой-то резкий ответ получился, сорри. В общем то хотел написть, что по всем GNU утилитам лучше сразу читать страшный info, а не man. В их man'ах может быть не всё. Не знаю, к сожаленью или нет, но факт.

mky ★★★★★
()
Ответ на: комментарий от mky

Впервые вижу это! Век живи-век учись...

Pyzia ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.