Существует проект диспетчера пакетов - Отклоняют - с интересной основополагающей идеей ("функциональный" pkg менеджер), который также поддерживает операцию в расчете на пользователя:
Многопользовательская поддержка
При запуске в версии 0.11 Отклоните, имеет многопользовательскую поддержку. Это означает, что непривилегированные пользователи могут надежно установить программное обеспечение. У каждого пользователя может быть различный профиль, ряд пакетов в Отклонить хранилище, которые появляются в ПУТИ пользователя. Если пользователь установит пакет, который другой пользователь уже установил ранее, то пакет не будет создан или загрузил во второй раз. В то же время для одного пользователя не возможно ввести Троянского коня в пакет, который мог бы использоваться другим пользователем.
ПРИМЕЧАНИЕ Я ХОЧУ ДОБАВИТЬ: Nix
должно быть применимым в подобной Unix системе по Вашему выбору (например, дистрибутив Linux).
Существует также связанное большое количество пакетов, которые могут быть установлены с Отклонить диспетчером пакетов - Nixpkgs - созданный для многих платформ:
- GNU/Linux на 32-разрядном и 64-разрядном x86 (i686-linux и x86_64-linux)
- Mac OS X (i686-darwin и x86_64-darwin)
- FreeBSD (i686-freebsd и x86_64-freebsd)
- OpenBSD (i686-openbsd)
- Windows / Cygwin (i686-cygwin),
и связанный дистрибутив - NixOS:
NixOS является дистрибутивом Linux на основе, Отклоняют. Это использует, Отклоняют не только для управления пакетом, но также и управлять конфигурацией системы (например, в файлы конфигурации сборки в / и т.д.). Это означает, среди прочего, что возможно легко откатывать всю конфигурацию системы к более раннему состоянию. Кроме того, пользователи могут установить программное обеспечение без полномочий пользователя root. Считайте больше …
и связанная "непрерывная" система сборки - Гидра.
Все ответы до сих пор (а также Ваш пример в вопросе) предполагают, что Вы хотите touch
все в каталоге, даже при том, что Вы сказали "касание все папки". Если оказывается, что каталог содержит файлы и папки, и Вы только хотите обновить папки, можно использовать find
:
$ find . -maxdepth 1 -mindepth 1 -type d -exec touch {} +
Или если Ваш find
реализация не поддерживает нестандартное -mindepth
/-maxdepth
предикаты:
$ find . ! -name . -prune -type d -exec touch {} +
Это:
$ touch -c -- */
Должен работать в большинстве оболочек за исключением того, что:
touch
символьные ссылки на каталоги в дополнение к простым каталогам*
в оболочках кроме csh
, tcsh
, zsh
, fish
или оболочка Thompson (который сообщил бы об ошибке вместо этого). Здесь, мы используем -c
работать вокруг этого, хотя это могло все еще touch
файл некаталога называют *
.С zsh
, к touch
каталоги только, включая скрытые:
touch -- *(D/)
Попробовать
touch ./*
Это избегает ненужного for
цикл, который породил бы новый процесс для каждого файла и работы для всех имен файлов, даже с пробелами или, которые похожи на опции (как -t
). Единственное время это не работало бы, - то, если бы у Вас нет (неточечных) файлов в каталоге, в этом случае, Вы закончили бы тем, что создали названный файл *
. Избегать что, для конкретного случая touch
большинство реализаций имеет a -c
опция (также названный --no-create
в версиях GNU) для не создания несуществующих файлов, т.е.
touch -c ./*
См. также хорошие ссылки в ответе jasonwryan, а также этом.
find . -type d -maxdepth1 -print0 | xargs -0 touch
, или ответ MichaelMrozek выше.
– jw013
08.10.2011, 06:02
Вы не должны пытаться проанализировать вывод ls
.
Кроме того, необходимо заключить Ваш в кавычки "$file"
получать любой пробел. См. http://www.grymoire.com/Unix/Quote.html
Что-то вроде этого могло бы достигнуть того, что Вы после:
for file in *; do touch "$file"; done
Посмотрите первые две Ловушки Bash для более полного объяснения.
touch ./*
должен работать в большинстве случаев. Действительно нет никакой потребности в for
цикл с тех пор touch
может взять несколько файлов, и Вам нужно ./
обработать файлы с именами как --help
правильно. Это - хороший ресурс на предмете.
– jw013
08.10.2011, 03:32
*
не получает файлы и каталоги, имя которых начинается с точки. Один способ зафиксировать, который должен включить dotglob
опция оболочки через shopt -s dotglob
.
– Witiko
30.08.2016, 18:49
На всякий случай, если вы хотите обновить временные метки для всех файлов/каталогов, происходящих из этого каталога, попробуйте либо (обратите внимание, что моя находка здесь ниже является псевдонимом того, что некоторые системы называют gfind, т. е. gnu-версия find ).
find./ -exec touch -am '{}' \;
Или, более эффективно,
for f in **; do touch -am $f; done
-am означает обновление как для доступа, так и для модификации. Обратите внимание, что вы, вероятно, не можете просто выполнить touch -am **, так как вы не можете запустить exec в списке, превышающем getconf ARG _MAX
{} \+
является особеннымfind
синтаксис - прочитал страницу справочника для больше. Я думаюtouch -c ./*/
работал бы также. – jw013 08.10.2011, 05:12-maxdepth 1
к команде, так, чтобыfind
не рекурсивно вызывает в подпапки. OP, кажется, хочет коснуться только тех папок в cwd, не подпапок. – Steven Monday 08.10.2011, 05:53