0

亲爱的命令行大师,

我有一个目录树,我想为其生成一个文件,该文件每行包含两个条目:每个文件的完整路径和所述文件的相应权限。

例如,一行可能包含:

/v1.6.0.24/lib/mylib.jar -r-xr-xr-x

生成左侧列的最佳方法似乎是find。但是,由于ls似乎没有读取文件名列表或获取标准输入的能力,看来我必须求助于为我执行此操作的脚本。...麻烦。

我确信我已经看到人们以某种​​方式找到对找到的每个文件运行命令,但今天早上我一定很愚蠢,因为我似乎无法弄清楚!

任何人?

在读取所述文件方面,文件名中可能存在空格,因此如果有办法让一些现有的命令行工具从右到左计算字段,那肯定会很好。例如,我们有cut。但是,cut是左手优先的,不会采用负数来表示从右侧开始编号(这对我来说似乎是最明显的语法)。...无需编写程序即可,有什么简单的方法吗?

在此先感谢,特别感谢您解释您可能提供的任何示例!

谢谢, RT

4

4 回答 4

3

GNU findutils4.2.5+:

find -printf "$PWD"'/%p %M\n'
于 2010-02-12T19:05:23.067 回答
1
stat -c %A file

将打印文件的文件权限。

就像是:

find . -exec echo -ne '{}\t\t' ';' -exec stat -c %A {} ';'

会给你一个格式错误的版本。

它变得更加棘手,因为您希望所有内容都在表格中对齐。您可能想查看“列”命令。TBH 我会稍微放宽我的输出要求。在 SH 中格式化输出是一件令人头疼的事情。

于 2010-02-12T19:29:47.533 回答
0

也可以用 ls 和 awk 来完成:

ls -l -d $PWD/* | awk '{print $9 " " $1}' > my_files.txt
于 2010-02-12T19:20:47.903 回答
0

重击 4

shopt -s globstar
for file in /path/**
do
    stat -c "%n %A" "$file"
done
于 2010-02-13T00:37:41.610 回答