2014-11-16 2 views
1

Я пытаюсь удалить группу и всех пользователей из строки разрешений. Такие, как -rwxr-xr-x и я хочу, чтобы это было -rwx, а затем снять дефис, чтобы сделать его rwxИспользование Вырезать для обрезки строк разрешений файлов

Сейчас я получаю строку разрешений через этот код: filePerms=$(stat --format=%A $path) где $path просто любой каталог в файл.

Вот моя попытка с помощью разреза, чтобы избавиться от 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

Каков ваш ожидаемый результат? –

+0

Чтобы получить символы 2-4 из строки разрешений. Например, '-rw-r-r -' to 'rw-' – Angel

+0

Почему вы не используете 'ls -l' вместо' stat'? Разрешения - это первый столбец вывода 'ls -l' – helloV

ответ

2

Попробуйте stat --format=%A filename | cut -c 2-4.

Это выбирает символы второго и четвертого, которые вы хотите.

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 
+0

Не могли бы вы объяснить, что здесь происходит? Я не слишком хорошо знаком с awk или какой командой в этом коде. – Angel

+0

Также как я могу использовать awk на строке? – Angel

+0

добавлен пример .. –