3

Можно ли указать новый шаблон для сопоставления файлов и папок, которые я хочу скрыть из файлового менеджера ОС (Explorer, Finder и т.д.)?

При использовании некоторых редакторов (в моем случае Emacs) будут создаваться автоматические резервные копии, которые по умолчанию не скрыты от обычного пользовательского интерфейса системы. Было бы полезно иметь возможность указать новый шаблон для соответствия скрытым файлам / папкам, таким как

((\.|_).+)| ; normal hidden files in *nix and dos, respectively
.*~         ; emacs backup files
#.+#        ; emacs autosave files

Возможно ли это, и (если да) как это можно сделать? Я хотел бы решения для всех платформ, если это возможно.

4 ответа4

3

В вашем вопросе говорилось, что вы хотите скрыть файлы из Finder или Explorer. Я капризный старик, поэтому я не знаю, что это такое. В качестве "проводника" я использую bash и ls в xterm. ; -]

bash есть переменная окружения, которую вы можете установить под названием GLOBIGNORE . Я не пробовал, но на странице руководства написано:

Разделенный двоеточиями список шаблонов, определяющих набор имен файлов, которые будут игнорироваться расширением пути. Если имя файла, совпадающее с шаблоном расширения пути, также соответствует одному из шаблонов в GLOBIGNORE, оно удаляется из списка совпадений.

Это должно охватывать такие вещи, как автозаполнение внутри самого bash , но я не знаю, обращают ли какие-либо другие программы внимание на GLOBIGNORE GLOBIGNORE.

ls также настраивается. В вашем псевдониме для ls укажите некоторую комбинацию --hide='.*~' (Если вы все еще хотите видеть их с помощью ls -a) или --ignore='#.*' . Или вы можете использовать --color=auto и использовать dircolors чтобы установить LS_COLORS для чего-то, что не будет выделяться (так что вы все равно можете их видеть, но они не попадутся вам на глаза).

3

Нет, определение скрытого файла не настраивается в большинстве операционных систем. Windows использует атрибут файла, а системы на основе Unix жестко кодируют соглашение о точках во всей операционной системе и инструментах.

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

(setq backup-directory-alist
      `((".*" . ,temporary-file-directory)))
(setq auto-save-file-name-transforms
      `((".*" ,temporary-file-directory t)))

Это поместит все резервные копии Emacs и автоматически сохраненные файлы во временную директорию вашей системы. Дополнительную информацию смотрите в разделе Backup Directory на Emacs Wiki.

Другие инструменты предоставляют аналогичные функции, но универсального соглашения не существует, поэтому вам нужно будет проверить документацию и настроить каждый из них в отдельности.

0

Не на 100% автоматически, но, возможно, вы можете использовать Pathfinder 6 http://cocoatech.com/pathfinder/

Вы можете получить информацию о файле с помощью CMD + I и установить флажок «Невидимый атрибут».

Файл исчезнет в Pathfinder, Finder, но все еще присутствует и остается нетронутым (подтверждается с помощью ls). Я не знаю, что именно делает Pathfinder за сценой, чтобы сделать файл невидимым, но он работает.

0

Ну, вы можете попробовать взломать OSX или другой * nix. Это не элегантно и может вызвать другие проблемы, но вы можете просто написать небольшой скрипт, который отслеживает каталог для файлов, соответствующих вашему шаблону, и переименовывает их в точечные файлы. Если вы затем запустите этот скрипт как cronjob, все соответствующие файлы будут переименованы в скрытые. Например:

#!/bin/env bash
while true; do 
  find ~/ -name "*~" -o -name "\#*\#"| ## find files matching your pattern
   while IFS= read -r n; do            ## save each file as $n
     d=`dirname $n`;                   ## $d is the directory $n was found in
     b=`basename $n`;                  ## $b is the name of the file, no path
     mv "$n" "$d/.$b";                 ## rename it as a hidden file
     sleep 1;                          ## wait one second
   done;
done

Если вы сохраните это как ~/renamedot.sh и сделаете его исполняемым (chmod a+x ~/renamedot.sh), то вы можете создать crontab (запустить cron -e) следующим образом:

@reboot /Users/your_user/renamedot.sh &

Теперь этот скрипт будет запускаться как демон и автоматически переименовывать любые файлы, соответствующие вашему шаблону, в файлы со скрытыми точками.

ВНИМАНИЕ: Это не очень хорошая идея. Программы, которые генерируют эти файлы и могут зависеть от них, больше не найдут их, поскольку они были переименованы. Например, emacs M-X recover-this-file больше не будет работать, поскольку его резервная копия не будет найдена. Конечно, вы всегда можете указать его вручную на переименованный файл, но в других случаях это может быть не так просто. Так что используйте на свой страх и риск.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .