URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10300
[ Назад ]

Исходное сообщение
"как написать этот код на BASH"

Отправлено tukanen , 13-Фев-20 15:18 
Пройти в папке по всем файлам и записать на сам файл время создания файла.
С батом этот код вот так реализованно. Хотел бы что то на SHELL или Python. Спасибо за Внимание.

@echo off
for %%f in (*.txt) do (
for /f "tokens=1*" %%a in ('forfiles /m "%%f" /c "cmd /c echo @fdate @ftime"') do (
echo.>> "%%f"
echo Created: %%a - %%b >> "%%f"
)
for /f "tokens=1-5 delims=.: " %%j in ('dir /a-d /tc "%%f" ^| findstr /rc:"^[^ ]"') do echo Changed: %%j.%%k.%%l - %%m:%%n>> "%%f"
)
exit


Содержание

Сообщения в этом обсуждении
"как написать этот код на BASH"
Отправлено Аноним , 13-Фев-20 17:00 
мне кажется вы забыли указать сумму, которую готовы заплатить

"как написать этот код на BASH"
Отправлено Pahanivo , 13-Фев-20 17:49 
Сессия подъехала.


"как написать этот код на BASH"
Отправлено ACCA , 13-Фев-20 18:21 
> Пройти в папке по всем файлам и записать на сам файл время
> создания файла.

В общем случае - никак.

Есть способы для ufs2, zfs, ext4, btrfs, jfs.
Нет способа для xfs, да и для всяких vfat - они не хранят crtime.


"как написать этот код на BASH"
Отправлено Аноним , 13-Фев-20 19:24 
> Пройти в папке по всем файлам и записать на сам файл время
> создания файла.

for f in *.txt; do stat -c '%y' >> $f; done


"как написать этот код на BASH"
Отправлено Аноним , 13-Фев-20 19:26 
> for f in *.txt; do stat -c '%y' >> $f; done

Тут ошибка, забыт аргумент stat'а.
for f in *.txt; do stat -c '%y' $f >> $f; done


"как написать этот код на BASH"
Отправлено tukanen , 13-Фев-20 22:06 
>> for f in *.txt; do stat -c '%y' >> $f; done
> Тут ошибка, забыт аргумент stat'а.
> for f in *.txt; do stat -c '%y' $f >> $f; done

Спасибо .  Прекрасно работает.



"как написать этот код на BASH"
Отправлено ACCA , 13-Фев-20 23:45 
>> for f in *.txt; do stat -c '%y' $f >> $f; done
> Спасибо .  Прекрасно работает.

Угу. Только возвращает неправильное время. %w != %y


"как написать этот код на BASH"
Отправлено tukanen , 14-Фев-20 01:50 
>>> for f in *.txt; do stat -c '%y' $f >> $f; done
>> Спасибо .  Прекрасно работает.
> Угу. Только возвращает неправильное время. %w != %y

Я получаю то время когда создавались файлы. правильное время


"как написать этот код на BASH"
Отправлено ACCA , 14-Фев-20 21:50 
> Я получаю то время когда создавались файлы. правильное время

Ты получаешь время, когда изменялись файлы. Оно может совпадать со временем создания, если после создания файлы не трогали.

Короче, %y - это НЕ время создания файла.


"как написать этот код на BASH"
Отправлено tukanen , 14-Фев-20 22:51 
>> Я получаю то время когда создавались файлы. правильное время
> Ты получаешь время, когда изменялись файлы. Оно может совпадать со временем создания,
> если после создания файлы не трогали.
> Короче, %y - это НЕ время создания файла.

A мне это и нужно.  Я же script запускаю.. и получаю время создания файла... Второй раз уже не
запускаю. мне нужно первый ответ. что я и получаю.


"как написать этот код на BASH"
Отправлено ACCA , 15-Фев-20 03:47 
> A мне это и нужно.  Я же script запускаю.. и получаю
> время создания файла... Второй раз уже не

Нет, не получаешь. Почитай про разницу между
    crtime
    ctime
    mtime
    atime

У тебя задача - получить crtime. Ты напечатал mtime и врёшь, что это тебе и нужно.


"как написать этот код на BASH"
Отправлено DiabloPC , 14-Фев-20 16:10 
>>> for f in *.txt; do stat -c '%y' $f >> $f; done
>> Спасибо .  Прекрасно работает.
> Угу. Только возвращает неправильное время. %w != %y

Таки да: %y Time of last modification. А вот %w в мане шото не нашёл. Что оно такое?


"как написать этот код на BASH"
Отправлено Аноним84701 , 14-Фев-20 17:39 

> Таки да: %y Time of last modification. А вот %w в мане
> шото не нашёл. Что оно такое?

Свежая модно-молодежность (ЕМНИП, всего 10 лет как завезли) ;)
> %w - Time of file birth, or ‘-’ if unknown
> %W - Time of file birth as seconds since Epoch, or ‘0’

Это если мы о stat из coreutils.
В бздшных, для кастомного формата stat, вместо *кхе-кхе* интуитивно понятной *кхе* опции "-c"  "%y" (от yodified) или "%w" (wirth) нужно задавать какой-то  "-f"  "%m" или "%B" ;)