我正在尝试从权限字符串中删除该组和所有用户。例如-rwxr-xr-x
我希望它为-rwx
,然后取消前导破折号rwx
现在我通过以下代码获取权限字符串:filePerms=$(stat --format=%A $path)
其中$path
只是文件的任何目录。
这里我尝试使用cut来摆脱第4个角色和filePermsTest=$(cut -c1- $filePerms)
,但是我得到了这个错误:
cut: invalid option -- 'r'
Try 'cut --help' for more information.
59M 2014-03-21 19:25 -rw-r--r-- ./old/VMwareTools-9.6.2-1688356.tar.gz
以下是我尝试使用的cut
命令的一部分:N- from N'th byte, character or field, to end of line
这里的参考是我的代码的正常输出(这与问题没什么关系。它只是为了给你一个正在发生的事情以及如何使用它的参考) :
Size Date Time Permissions File
--------------------------------------------------------
59M 2014-03-21 19:25 -rw-r--r-- ./old/VMwareTools-9.6.2-1688356.tar.gz
9.2M 2014-03-21 19:24 -rw-r--r-- ./old/vmware-tools-distrib/lib/icu/icudt44l.dat
7.6M 2013-07-07 21:21 -rwxr-xr-x ./old/Sublime Text 2/sublime_text
4.8M 2014-08-26 23:51 -rwxrwxr-x ./old/sublime_text_3/sublime_text
我认为部分权限字符串被视为参数。
答案 0 :(得分:2)
尝试stat --format=%A filename | cut -c 2-4
。
这会选出你想要的第二到第四个字符。
答案 1 :(得分:0)
使用awk的substr
函数删除特定列中的某些字符。
command | awk 'NR>2{$4=substr($4,2,3)}1'
示例:
$ cat file
Size Date Time Permissions File
--------------------------------------------------------
59M 2014-03-21 19:25 -rw-r--r-- ./old/VMwareTools-9.6.2-1688356.tar.gz
9.2M 2014-03-21 19:24 -rw-r--r-- ./old/vmware-tools-distrib/lib/icu/icudt44l.dat
7.6M 2013-07-07 21:21 -rwxr-xr-x ./old/Sublime Text 2/sublime_text
4.8M 2014-08-26 23:51 -rwxrwxr-x ./old/sublime_text_3/sublime_text
$ awk 'NR>2{$4=substr($4,2,3)}1' file
Size Date Time Permissions File
--------------------------------------------------------
59M 2014-03-21 19:25 rw- ./old/VMwareTools-9.6.2-1688356.tar.gz
9.2M 2014-03-21 19:24 rw- ./old/vmware-tools-distrib/lib/icu/icudt44l.dat
7.6M 2013-07-07 21:21 rwx ./old/Sublime Text 2/sublime_text
4.8M 2014-08-26 23:51 rwx ./old/sublime_text_3/sublime_text