Я действительно хочу сказать, "не делают", поскольку это не лучшая идея. Однако это не отвечает на Ваш вопрос, поэтому давайте сделаем это вместо этого. Вот несколько предположений в сценарии, который я создаю ниже:
Сначала мы фиксируем владение папок в / домой:
chgrp users -r /home
Поэтому сначала давайте получим всех пользователей с uid 500 или выше:
getent passwd | awk -F: '{if($3 > 500 && $3 < 10000) { print $1 }}'
В моей системе это возвращается:
dennis
paul
tom
Теперь мы должны изменить группу:
for user in $(getent passwd | awk -F: '{if($3 > 500 && $3 < 10000) { print $1 }}'); do
usermod -g users $user
done
Теперь можно удалить больше необходимые группы:
for user in $(getent passwd | awk -F: '{if($3 > 500 && $3 < 10000) { print $1 }}'); do
groupdel $user
done
@ JW013 дал допустимое объяснение и решение.
Но могут быть некоторые случаи, когда вы хотите процитировать пути, например Когда они содержат несколько пробелов или специальные символы. В этом случае вы должны использовать $ Home
вместо ~
~ , то есть ваша База = «~ / z»
станет BASE = «$ HOLE / Z "
и работа правильно, потому что замена параметра интерпретируется в двойных цитатах, в отличие от расширения Tilde.
Вы могли бы использовать
find /proc/[0-9]*/fd/ -name 24 2> /dev/null | wc -l
или, если вы настаиваете на использовании LS
(это должно быть одним из несколько примеров , где он безопасен Сэй):
ls /proc/[0-9]*/fd 2>/dev/null | grep -c '^24$'
Ваша первая попытка не удалась, потому что вы перенаправляете вывод в файл (> output.txt
), что означает, что GREP
никогда не будет соответствовать, так как у него не было вывод, чтобы соответствовать. Вы могли бы либо использовать трубы ( |
), как я сделал выше или, используйте ;
; &
для разделения команд:
ls /proc/[0-9]*/fd 2> errors.txt > stdout.txt; grep "^24" stdout.txt | wc -l
-121--120240- Решил его с помощью конвертации геометрии-CROP + RETAGE:
convert -crop 100%x20% +repage image.png image.png
Использование ImageMagick:
$ convert -crop 800x1000 image.png cropped_%d.png
создаст последовательность файлов с именем Croped_1.png
, ,
CRAIND_2.PNG
и так далее.
ImageMagick зависал у меня, так как изображение было слишком большим для его обработки, поэтому мне пришлось прибегнуть к другим методам.
В итоге я использовал Python Image Library.
Далее следует быстрый и грязный ответ на вопрос OP:
from PIL import Image
im = Image.open("YourImage.yourformat")
for h in range(0, im.height, 1000):
nim = im.crop((0, h, im.width-1, min(im.height, h+1000)-1))
nim.save("PartialImage." + str(h) + ".yourformat")
В приведенном выше коде окончательные размеры жестко запрограммированы, но его можно легко преобразовать в собственный полноценный сценарий со всеми параметризованными входными данными. Если кому-то когда-нибудь понадобится такая вещь.