【发布时间】:2021-06-01 20:49:00
【问题描述】:
我正在尝试编写一个命令/函数来列出显示具有以下规则的文件的任何目录,从顶层到最深层:
- 隐藏文件
- 目录
- 按字母顺序
我想授予的另一个功能是能够将命令/函数用于传递的目录。示例:
目标
基本上我想输入如下内容:
user@machine:cuur-path $ my_listing_magic /some/crazy/directory
得到如下输出:
drwxrwxr-x 6 User Group 4,0K abr 8 12:12 .aaa_dir/
drwxrwxr-x 3 User Group 4,0K abr 8 12:12 .bbb_dir/
drwxrwxr-x 3 User Group 4,0K out 14 2020 .ccc_dir/
-rw-rw-r-- 1 User Group 4,1K abr 12 17:44 .a_file
-rw-r--r-- 1 User Group 25 dez 4 2017 .b_file
-rw-rw-r-- 1 User Group 21 mai 20 15:50 .c_file
drwx------ 44 User Group 4,0K mai 27 16:44 ddd_dir/
drwx------ 3 User Group 4,0K abr 5 2018 eee_dir/
drwx------ 3 User Group 4,0K abr 5 2018 fff_dir/
-rw-r--r-- 1 User Group 4,8K jun 1 18:52 d_file
-rw-r--r-- 1 User Group 1,2K jun 1 19:42 e_file
-rw------- 1 User Group 106K jun 1 19:33 f_file
(注意目录. 和.. 不存在。)
失败的尝试
只需使用ls 选项
我得到的最接近的是ls -alhvF --group-directories-first。它几乎就在那里,但不遵守所需的顺序并保留. 和..。我可以后验去掉那些,但由于顺序不正确,没有意义。
ls -lv 即-v 很好,因为它将所有.files/dirs 按字母顺序排序。
ls -l --goups-directories-first 也很酷,符合预期。可惜我不能让它在-v之前“行动”。
分而治之
我想把问题分成两部分:我可以先列出隐藏文件,然后列出未隐藏文件:list_hidden; list_non_hiden。然后为了简单起见,我可以创建一个别名或函数以正确的顺序调用它们。
非隐藏是相当琐碎的!但是仅列出隐藏文件变得有点麻烦。我尝试了ls -ld .!(|.) 之类的东西,但这有使用-d 的缺点——因此它不能用于列出其他目录。至少不是没有文件的完整路径...
谢谢!
【问题讨论】:
-
简而言之
find .... | sort | xargs ls。我不认为你可以让 ls 在目录上添加 / 。你总是可以用 C 语言编写你自己的 ls - 为什么要使用 shell。any thought please let me know这不是“任何想法”的论坛——它是编程问题的问答论坛。您正在努力解决什么具体问题?你想问什么问题。请看How to Ask。对于有“想法”的论坛,请查看其他论坛 - quora、reddit 等。 -
@KamilCuk:感谢您提供的途径!对不起,我只是删除了这条线。希望它使“目标”和我尝试的问题更加明显。