3

コレクションに追加された最新の映画を表示する方法として、nas マシンのディレクトリに作成された最新の 16 個のフォルダーを一覧表示する簡単なスクリプトを作成しようとしています。

私が現在使用しているスクリプトは次のとおりです。

#!/bin/bash
rm -f /volume1/new-movies/*
IFS=$'\x0A'
fresh=$(ls -1ct /volume1/movies | head -16)
for folder in $fresh
do
    file=$(find "/volume1/movies/$folder" -maxdepth 1 -type f)
    movie=$(basename "$file")
    ln -s "$file" "/volume1/new-movies/$movie"
done
ls -1 /volume1/new-movies

これで問題ありません (movies フォルダーにはフォルダーのみが含まれます)。私の問題は、これが作成時間ではなくファイル/フォルダーの変更時間でソートされることです。

ファイルシステムはext4をサポートしており、サポートする必要がありますが、birth timeアクセスできませんでした。

scott@pandora scripts $ stat  /volume1/movies/example/
  File: '/volume1/movies/example/'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: 902h/2306d      Inode: 373800961   Links: 2
Access: (0755/drwxr-xr-x)  Uid: ( 1028/   scott)   Gid: (  100/   users)
Access: 2013-04-09 13:39:53.243991684 +1000
Modify: 2013-04-06 13:26:00.965998952 +1100
Change: 2013-04-09 11:46:23.280991727 +1000
 Birth: -

ただし、samba では正しい作成日時の表示に問題はないようです。bash から同じ情報にアクセスする方法はありますか? それとも、smb に直接アクセスし、各フォルダーに作成日をリストして、必要なことを行うために python/other で何かをプログラムする必要がありますか?

scott@pandora scripts $ smbclient \\\\localhost\\movies\\
Enter scott's password:
Domain=[EXAMPLENET] OS=[Unix] Server=[Samba 3.6.9]
smb: \> allinfo "example"
altname: E06KNE~A
create_time:    Fri Jun 18 17:23:49 2010 EST
access_time:    Tue Apr  9 13:39:53 2013 EST
write_time:     Sat Apr  6 13:26:01 2013 EST
change_time:    Sat Apr  6 13:26:01 2013 EST
attributes: DA (30)
smb: \> quit

編集:この問題に対する私の最終的な解決策については、以下の回答を参照してください。

4

2 に答える 2

1

Linux ファイル システムは、ファイル作成時間をサポートするために使用されたことはありませんが、明らかに ext4 はサポートしています。ls や stat などの標準ツールにはあま​​り便利に統合されていませんが、root としてこれを行うことができます。

debugfs -R 'stat /full/path/to/my/file.txt' /dev/sda1

sda1 は、ファイルシステムが存在するデバイスです

于 2013-04-09T08:07:53.813 に答える