Можно использовать команду
chage -d 0 [username]
для изменения пользовательской даты истечения срока, вынуждая их изменить их пароль на первом входят в систему.
Можно читать больше об этом в страницах справочника для chage
и usermod
.
С tcsh
6.17.01 и выше:
set globdot
du -s -- *
С более старыми:
du -s -- * .[^.]* ..?*
(интересно, который работает лучше, чем его дубликат POSIX (* .[!.]* ..?*
) потому что в tcsh
(и в zsh
в csh
эмуляция (cshnullglob
опция)), вопреки оболочкам POSIX, они копируют, которые не соответствуют никакому файлу, ни до чего не расширены вместо себя),
Со стандартной находкой:
find . ! -name . -prune -exec du -s {} +
Отметьте тот GNU du
имеет a -d
опция ограничить глубину, на котором использовании диска dir сообщаются:
du -ad1
Можно использовать ls-A команда для не включения в список. и.. в управляют заменой:
echo "`ls -A`"
du *
будет работать, даже если будут имена с пробелами в каталоге. du `ls -A`
не будет (и du "`ls -A`"
не будет работать вообще).
– derobert
14.05.2013, 18:23
du "`ls -A`"
в тестовом каталоге и это, казалось, работало хорошо.
– Nykakin
14.05.2013, 18:34
Не уверенный, если существует tcsh встроенное, но в зависимости от версии находки, Вы имеете, существует обходное решение как это:
find -maxdepth 1 -not -name '.' -exec du -s '{}' '+'
Если Ваша находка не делает -exec COMMAND {} +
синтаксис, можно попробовать за -print0
/xargs
:
find -maxdepth 1 -not -name '.' -print0 | xargs -0 du -s
Я обычно использую:
du -ks * .[^.]*
Сюда .
и ..
не подобраны и это должно быть довольно портативно.
путь (но может дросселировать или иметь побочные эффекты на странных именах файлов, т.е. файлы, имя которых содержит новую строку! но также и файлы, содержащие *
или a "
или... Вы получаете изображение ^^. Будьте очень осторожны при использовании их способ перечислить и использовать файлы),
$ for i in * .* ; do echo $i ; done | egrep -v '^\.$|^\.\.$' > /tmp/list_files_one_by_lines
$ while read a_file ; do echo something on "${a_file}" ; done < /tmp/list_files_one_by_lines
таким образом, необходимо лучше использовать: найти
более точно:
найти.-mindepth 1-print0 | xargs-0 some_command
это то, почему:
$ find . | egrep '^\.$|^\.\.$'
.
$ find . -mindepth 1 | grep '^\.$'
$
и использование -print0 | xargs -0 ....
позвольте заботиться о почти каждом специальные символы, которые могли произойти в имени файла (новая строка, кавычки; ctrl+z, Вы называете его),
Нет никакого простого универсального решения, как это - зависимый оболочки:
Для tcsh или удара:
echo .[^.]*
Для ksh:
echo .*
Однако это перестанет работать в случае Nykakin (начало файлов..)
Для более универсального ответа используйте "grep" или "найдите", как в:
ls -a|grep '^\.\(..\|[^\.]\)'
Это работает со всеми оболочками, которые я знаю, и не имеет случая Nykakin. Также работы с теми, которые после особых случаев, которые могли привести к сбою другие решения:
.x
.x.
..x.
Это означает: Запустите с точки, сопровождаемой по крайней мере 2 символами или символом, который не является точкой.
du -s -- * .[^.]* ..?*
работы и покрытия нечетные случаи включали пробелы в имена и точечные точечные имена. И это даже работает в ударе.Спасибо! – Mark Adler 15.05.2013, 01:48du
,-a
не может быть объединен с-d
. Однакоdu -d1 .
добивается цели. Спасибо за это также. – Mark Adler 15.05.2013, 01:54