我正在尝试将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..
我不能忽视"标题"部分,因为它包含文件名的开头,但非标题行是我希望标准输入数据步骤能够处理的相对标准。
有没有办法按线路特性控制输入?有没有人有过像这样的文件阅读的经验?
作为参考,可以使用
在Linux环境中创建文件ll -R
答案 0 :(得分:2)
我建议不要使用ls
相反,请使用find
。它有-printf
选项,可让您格式化并显示有关找到的文件的某些信息。
例如:
find /path/to/folder -type f -printf "%p\t%g\t%s\n"
将打印由标签分隔的每个找到的文件的名称,组和大小。
有关其他信息,请参阅find
的手册页。