deuseradd(8)
:
-M, --no-create-home
Do no create the user's home directory, even if the system wide setting
from /etc/login.defs (CREATE_HOME) is set to yes.
Одним из способов было бы
find. -name "text*.txt" -type f -print0 | xargs -0 -I{} sh -c 'f="{}"; head -100 "$f" > "${f%.txt}_new.txt"'
find. -name "text*.txt" -type f
находит все текстовые файлы в каталоге -print0
печатает путь к файлу с нулевым символом для сохранения пробелов xargs -0
принимает аргументы, оканчивающиеся нулем -I{}
используется в качестве заполнителя для аргумента sh -c
выполняет тире с командной строкой f="{}"
сохраняет аргумент в переменнойf
head -100 "$f"
главная команда "${f%.txt}_new.txt"
заменяет ".txt" на "_new.txt" в аргументе Вы можете перебирать файлы
for f in *.txt
do
head -n100 "$f" > "${f%.txt}_new.txt"
done
Предостережение заключается в том, что *.txt
будет расширяться в момент достижения, чтобы перечислить все файлы, которые соответствуют. Если вы уже запускали этот сценарий (частично или полностью ), он также будет соответствовать некоторым файлам результатов. Решение состоит в том, чтобы либо удалить их перед запуском (rm *_new.txt
), либо сжать шаблон.
Если вы хотите "параллельно", используйтеparallel
shopt -s extglob
parallel sh -c 'out="${1%.txt}_new.txt"; head -n 100 "$1" > "$out"' _ -- !(*_new).txt
Я предполагаю, что у вас оболочка bash, и вы используете расширенные шаблоны для перебора текстовых файлов, которые не не *_new.txt