2015-09-08 37 views
0

我試圖解析一個乾淨的平面文件的Linux目錄列表。數據的一個子集如下所示。閱讀非標準數據結構,Linux文件列表

./DIRECTORY1/SUBDIR1: 
total 5 
drwxrwx--- 2 user1 group1 2048 Sep 8 13:40 . 
drwxrws--- 13 user2 group1 2048 Sep 8 17:00 .. 
-rwxrwx--- 1 user1 group1 56362 Dec 18 2014 file12112012.csv 
-rwxrwx--- 1 user1 group1 65233 Dec 18 2014 file12112013.csv 
-rwxrwx--- 1 user1 group1 66322 Dec 22 2014 file20140902.csv 
-rwxrwx--- 1 user1 group1 65443 Dec 22 2014 file20140918.csv 
-rwxrwx--- 1 user1 group1 64003 Dec 22 2014 file20141016.csv 

./DIRECTORY1/SUBDIR2: 
total 5 
-rw-r--r-- 1 user1 group1  133 Jun 25 16:05 test.sas 
-rwxrwx--- 1 user1 group1  338 Sep 19 2014 threads.sas 
-rwxrwx--- 1 user1 group1 5997 Apr 8 16:05 comparison.sas 
-rwxrwx--- 1 user1 group1 5341617 May 6 20:02 univariate.pdf 
-rwxrwx--- 1 user1 group1  814 Jan 30 2015 avg_fix.sas 

./DIRECTORY2: 
total 44 
drwxrwx--- 8 user1 group1 3864 May 20 2014 . 
drwxrws--- 13 user2 group1 2048 Sep 8 17:00 .. 
drwxrwx--- 2 user1 group1 3864 May 20 2014 DataSources 
drwxrwx--- 2 user1 group1 3864 May 20 2014 HPDM 
drwxrwx--- 2 user1 group1 3864 May 20 2014 Meta 
drwxrwx--- 2 user1 group1 3864 May 20 2014 Reports 
drwxrwx--- 2 user1 group1 3864 May 20 2014 System 
drwxrwx--- 2 user1 group1 3864 May 20 2014 Workspaces 
-rwxrwx--- 1 user1 group1 83 May 20 2014 project.emp 

理想情況下,我想輸出的數據看起來像:

filename        user group size date 
./DIRECTORY1/SUBDIR1/file12112012.csv user1 group1 56362 12/18/2014 
./DIRECTORY1/SUBDIR1/file12112013.csv user1 group1 65233 12/18/2014 
..etc.. 

我可不能忽視的「頭」部分,因爲它包含文件名開頭,但非 - 標題行對於我期望標準輸入數據步驟能夠處理的內容是相對標準的。

有沒有辦法通過線路特性來控制輸入?有沒有人有過像這樣的文件閱讀經驗?

作爲參考,該文件可以使用

ll -R 
+0

這裏有幾點建議:http://www.sascommunity.org/wiki/SAS_Filesystem_Toolbox#5._Retrieve_list_of_files_with_attributes_.28size_etc..29 – Reeza

回答

2

我不會建議使用ls這個Linux環境下創建的。
而是使用find。它有一個-printf選項,可讓您格式化並顯示有關找到的文件的某些信息。

例如:

find /path/to/folder -type f -printf "%p\t%g\t%s\n" 

將打印每一個找到的文件名,組和大小的標籤分隔。

有關更多信息,請參閱find的手冊頁。

+0

謝謝。這是一個更好的方法,我現在有一個使用find命令準備好的sas數據集。 – user2209700