/ dev / null-like автоматический каталог мусора для перемещения файлов?

Я могу (перенаправить) текстовый вывод в /dev/null , чтобы избавиться от него. Это очень удобно, потому что я могу легко включить / отключить его в моем коде bash.

Теперь у меня есть скрипт, который обрабатывает файлы, а после этого их переносит в другой пункт назначения. Простой пример будет выглядеть так:

 source_dir=some/source/path target_dir=some/target/path for f in `ls $source_dir`; do echo $f; mv $f $target_dir; done 

Теперь, когда я решаю, что меня больше не интересует перемещение файлов в целевой каталог, но для удаления файлов directement, что является наиболее эффективным способом достижения этого (с точки зрения строк кода для редактирования)?

Я могу подумать о том, чтобы mv команду mv в переменную:

 process_cmd=echo finnish_cmd=mv source_dir=some/source/path target_dir=some/target/path for f in `ls $source_dir`; do $process_cmd $f; $finnish_cmd $f $target_dir; done 

Затем я мог бы потом изменить что-то вроде:

 process_cmd=echo finnish_cmd=rm source_dir=some/source/path target_dir= for f in `ls $source_dir`; do $process_cmd $f; $finnish_cmd $f $target_dir; done 

Но я думал, что это будет еще проще, если бы можно было указать целевой каталог мусора /dev/null like, который автоматически очищается в конечном итоге (это своего рода семантика rm с командой mv ):

 process_cmd=echo finnish_cmd=mv source_dir=some/source/path target_dir=/dev/null # <--- is there some sort of trash folder for such tasks? for f in `ls $source_dir`; do $process_cmd $f; $finnish_cmd $f $target_dir; done 

Есть ли окончательный способ пойти / общая лучшая практика для такого случая?

2 Solutions collect form web for “/ dev / null-like автоматический каталог мусора для перемещения файлов?”

Нет такого места по довольно простой причине: для этого нет никакого смысла. Я не могу представить, где вы можете использовать mv глобально, но не rm . Поэтому, пока /dev/null существует, потому что он отвечает потребностям, /dir/garbage не потому, что это не так.

Конечно, вы могли бы сказать, что в этой ситуации есть необходимость, чтобы решить эту проблему: «Каков наиболее эффективный способ достичь этого (с точки зрения строк кода для редактирования)?» Предполагая, что механизм, определяющий, какие файлы должны быть перемещены или удалены, определяется ли target_dir или нет:

 if [ -n "$target_dir" ]; then # move file else # delete file fi 

Довольно просто, и вам не нужно повторно редактировать что-либо (я полагаю, «редактируя», вы не имели в виду что-то о техническом обслуживании или сокращали количество строк, потому что что-то делалось в неудобном, взломанном или неправильном виде в название «более простого обслуживания» – или, что еще хуже, псевдохудожественность – оксимороническое).

Тем не менее, вы можете довольно легко реализовать свой собственный каталог мусора, запустив такое задание cron, как это один раз в час:

 garbage_dir=/usr/local/garbage for file in $garbage_dir/*; do rm -f -R $file; done 

Я думаю, вы просто ищете каталог /tmp . В большинстве случаев все, что вы разместите там, будет удалено при следующей перезагрузке. Детали зависят от вашей конкретной ОС и зависят от значения переменной $TMPTIME . Для многих дистрибутивов по умолчанию выполняется очистка /tmp каждой загрузке, так как $TMPTIME устанавливается в 0. В большинстве (если не все) дистрибутивах это устанавливается в файле /etc/default/rcS .

Итак, просто сделайте что-нибудь подобное (обратите внимание, что я использую shell globbing, а не parsing ls ):

 process_cmd=echo finish_cmd=mv source_dir=some/source/path target_dir=/tmp for f in $source_dir/*; do $process_cmd "$f"; $finish_cmd "$f" $target_dir; done 
  • попытка избежать цитат
  • Открыть несколько файлов в папках с определенным шаблоном имени
  • Функция вывода Bash Output / dev / null
  • Можно ли периодически менять PS1 по сценарию в фоновом режиме?
  • Команда для уничтожения определенного PID, предоставленного предыдущей командой
  • Work-Around для хранения значений массива в переменной среды, а затем вызов из сценария Bash
  • запускать несколько значений из файла по одной команде один за другим
  • Нужен скрипт, который генерирует файлы из слов в одном текстовом файле
  • Не удалось выполнить запрос Curl из сценария Ansible playbook
  • Найти все репозитории git, которые не содержат ни одного из .gitignore и .gitattributes
  • Найти имена репозиториев из гитолитного информационного вывода
  • Interesting Posts

    Как настроить мой сервер, чтобы избежать утечки информации из заголовка SERVER его ответа HTTP

    Читайте от определенного момента до определенного символа

    Почему в API-интерфейсах POSIX IPC отсутствуют LSM-крючки?

    ipfw в Mac OS X 10.8

    Предполагая, что sshd разрешает только аутентификацию с открытым ключом, как мне регистрировать отпечатки пальцев?

    Как разобрать XML в CSV с помощью сценария оболочки?

    Итерируйте файл до тех пор, пока не будет извлечено каждое значение выше порогового значения

    Цветность

    Как запустить x экземпляров сценария параллельно?

    Как получить строки между строками?

    Поиск строки во многих файлах на HP-UX

    Определить поврежденный файл с заданным номером логического блока

    Может запустить пользовательский сервис systemd, не может его включить

    Не удалось создать пользовательский образ ISO Tiny Core Linux

    Сетевой интерфейс Debian больше не работает после обновления / обновления

    Linux и Unix - лучшая ОС в мире.