PDA

Դիտել ողջ տարբերակը : Հարցեր FREEBSD-ից



Reyno
19.02.2010, 12:45
Խնդրում եմ օգնեք մի հարցում․
ինձ հարկավոր է սկրիպտ ֆայլերի անունները ավտոմատ իրենց ստեղծման ամսաթվերով փոխարինելու համար։ Կամ ինչ-որ այլ լուծում։

ars83
20.02.2010, 21:08
Խնդրում եմ օգնեք մի հարցում․
ինձ հարկավոր է սկրիպտ ֆայլերի անունները ավտոմատ իրենց ստեղծման ամսաթվերով փոխարինելու համար։ Կամ ինչ-որ այլ լուծում։

UNIX ՕՀ-ն չի տրամադրում ֆայլի ստեղծման ճշգրիտ ժամանակը վերականգնելու միջոցներ: Յուրաքանչյուր ֆայլի հետ ՕՀ-ն պահեստավորում է նրա inode-ը, որում պարունակվում են տարատեսակ տեղեկություններ ֆայլի մասին, այդ թվում՝

Ֆայլի վերջին փոփոխման ժամանակը (change time, ctime)
Ֆայլի վերջին օգտագործման ժամանակը (acces time, atime)
Ֆայլի վերջին փոփոխման ժամանակը (modification time, mtime)


ctime-ը ցույց է տալիս, թե վերջին անգամ երբ է փոփոխվել ֆայլի inode-ը (օրինակ՝ chmod-ի միջոցով ֆայլի հասանելիությունը, chgrp-ի միջոցով՝ խումբը, chown-ի միջոցով՝ տիրոջը փոփոխելիս, mv-ի միջոցով վերանվանելիս) կամ պարունակությունը (օրինակ՝ ֆայլի մեջ նոր տող ավելացնելիս):

atime-ը ցույց է տալիս, թե երբ է վերջին անգամ օգտագործվել ֆայլի պարունակությունը (օրինակ՝ cut-ի միջոցով արտածվել կոնսոլին կամ shell սկրիպտի մեջ օգտագործվել):

mtime-ը ցույց է տալիս, թե երբ է վերջին անգամ փոփոխվել ֆայլի պարունակությունը (օրինակ՝ նոր բան գրվել կամ ջնջվել):

ls -lc հրամանը ցուցադրում է ctime-ը, ls -lu հրամանը՝ atime-ը, ls -l հրամանը՝ mtime-ը:

ctime-ն, atime-ն ու mtime-ը կարելի է տեսնել նաև stat հրամանի օգնությամբ:

mtime-ը կարելի է տեսնել նաև date հրամանի օգնությամբ:

Մի քանի օրինակ.

$ touch example.txt
$ stat example.txt

Access: 2010-02-20 16:03:35.000000000 +0400
Modify: 2010-02-20 16:03:35.000000000 +0400
Change: 2010-02-20 16:03:35.000000000 +0400
$ ls -lc example.txt

-rw-r--r-- 1 ahayrape ahayrape 0 2010-02-20 16:03 example.txt
$ ls -lu example.txt

-rw-r--r-- 1 ahayrape ahayrape 0 2010-02-20 16:03 example.txt
$ ls -l example.txt

-rw-r--r-- 1 ahayrape ahayrape 0 2010-02-20 16:03 example.txt

$ echo "some text" >> example.txt

Ֆայլի պարունակության փոփոխություն՝ փոփոխվում են ctime-ն ու mtime-ը
$ stat example.txt

Access: 2010-02-20 16:03:35.000000000 +0400
Modify: 2010-02-20 16:09:47.000000000 +0400
Change: 2010-02-20 16:09:47.000000000 +0400
$ date "+%Y-%m-%d %H:%M" -r example.txt

2010-02-20 16:09

$ cat example.txt

Ֆայլի պարունակության օգտագործում (կարդալու գործողություն)՝ փոփոխվում է atime-ը
$ stat example.txt

Access: 2010-02-20 16:15:09.000000000 +0400
Modify: 2010-02-20 16:09:47.000000000 +0400
Change: 2010-02-20 16:09:47.000000000 +0400
$ chmod a-x example.txt

Ֆայլի հասանելիության կարգավորում՝ փոփոխվում է ctime-ը
$ stat example.txt

Access: 2010-02-20 16:15:09.000000000 +0400
Modify: 2010-02-20 16:09:47.000000000 +0400
Change: 2010-02-20 16:17:49.000000000 +0400


Կախված նրանից, թե ըստ ո՞ր ժամանակի եք ցանկանում վերանվանել ֆայլերը, կարելի է օգտագործել հետևյալ հրամաններից որևէ մեկը.

ctime`
$ mv example.txt `ls -lc example.txt | awk '{print $6"_"$7}'`.txt
$ ls

2010-02-20_16:17.txt
atime`
$ mv example.txt `ls -lu example.txt | awk '{print $6"_"$7}'`.txt
$ ls

2010-02-20_16:15.txt
mtime`
$ mv example.txt `date "+%Y-%m-%d_%H:%M"`.txt
$ ls

2010-02-20_16:09.txt



Զգուշացում. : սիմվոլի օգտագործումը ֆայլի անվանման մեջ դարձնում է այն անընթեռնելի Windows ՕՀ համար: