Tôi đang cố gắng grep cho các dòng trong trường đầu tiên của một đầu ra lớn hơn một số đã cho. Trong trường hợp này, số đó là 755
. Cuối cùng, những gì tôi đang làm là cố gắng liệt kê tất cả các tập tin với các đặc quyền lớn hơn (và không bằng) 755
bằng cách sử dụng stat -c '%a %n' *
và sau đó ống đến một số grep'ing (hoặc có thể sed'ing?) Để có được danh sách cuối cùng này. Bất kỳ ý tưởng làm thế nào điều này tốt nhất có thể được thực hiện?Các đường gpp cho các số lớn hơn số đã cho
Trả lời
thử điều này:
stat -c '%a %n' *|awk '$1>755'
nếu bạn chỉ muốn tên tập tin trong kết quả cuối cùng của bạn, bỏ qua những con số đặc quyền, bạn có thể:
stat -c '%a %n' *|awk '$1>755{print $2}'
EDIT
thực sự bạn có thể làm chmod
trong khi đang hoạt động. nhưng bạn nên đảm bảo rằng người dùng thực thi dòng awk có quyền thay đổi các tệp đó.
stat -c '%a %n' *|awk '$1>755{system("chmod 755 "$2)}'
lại, giả sử tên tệp không có dấu cách.
Oh cảm ơn vì tiện ích nhỏ đó. Tôi sẽ cắt bỏ lĩnh vực 2, nhưng bạn hoàn thành nó trong một đường ống ít hơn! – user2150250
Xem ra tên tệp có dấu cách. –
@ user2150250 lưu ý, lớp lót thứ hai của tôi cho rằng tên tệp của bạn không có dung lượng. – Kent
Tôi muốn sử dụng awk(1)
:
stat -c '%a %n' * | awk '$1 > 755'
Các mô hình awk
phù hợp với dòng mà trường đầu tiên là lớn hơn sau đó 755. Bạn có thể thêm một hành động nếu bạn muốn in một tập hợp con của một dòng hoặc một cái gì đó khác nhau, (Xem câu trả lời của @ Kent).
Không grep
cũng không sed
là tốt ở arithmetics. awk
có thể giúp (tiếc là tôi không biết điều đó). Nhưng lưu ý rằng find
có thể có ích ở đây, quá:
-perm mode
File's permission bits are exactly mode (octal or symbolic).
Since an exact match is required, if you want to use this form
for symbolic modes, you may have to specify a rather complex
mode string. For example -perm g=w will only match files which
have mode 0020 (that is, ones for which group write permission
is the only permission set). It is more likely that you will
want to use the `/' or `-' forms, for example -perm -g=w, which
matches any file with group write permission. See the EXAMPLES
section for some illustrative examples.
-perm -mode
All of the permission bits mode are set for the file. Symbolic
modes are accepted in this form, and this is usually the way in
which would want to use them. You must specify `u', `g' or `o'
if you use a symbolic mode. See the EXAMPLES section for some
illustrative examples.
-perm /mode
Any of the permission bits mode are set for the file. Symbolic
modes are accepted in this form. You must specify `u', `g' or
`o' if you use a symbolic mode. See the EXAMPLES section for
some illustrative examples. If no permission bits in mode are
set, this test matches any file (the idea here is to be consis‐
tent with the behaviour of -perm -000).
Vì vậy, những gì có thể làm việc cho bạn là:
find . -perm -755 -printf '%m %p\n'
Chỉ cần loại bỏ các phần -printf
nếu bạn chỉ cần tên tập tin.
Vì '755' thực sự là một số bát phân biểu thị một chuỗi các bit, chính xác thì" lớn hơn "nghĩa là gì? '666' cho phép mọi người viết quyền truy cập; là "lớn hơn" '755'? '755'' lớn hơn "' 666'? –
Người dùng OS X: Tương đương với 'stat -c '% a% n' *' (Linux) có vẻ là 'stat -f'% Lp% N '* ' – mklement0
người đang yêu cầu grep, trong khi mọi người vẫn đang đưa ra awk? – Soncire