Почему создаются файлы подчеркивания точек ._ и как их избежать?

156

Я использую разные операционные системы на разных машинах в разных местах. Я использую флэш-диск USB для хранения своих файлов (исходные коды и т. Д.).

Я новичок в Mac OS X и теперь я понимаю, что есть много файлов, созданных с ._префиксом подчеркивания точки .

Вопросов

Почему создаются ._файлы?

Каковы их цели?

Как я могу избежать их?

nimcap
источник
3
Мне они тоже не нравятся, но я научился мирно жить с ними.
Boehj
1
Если флэш-накопитель отформатирован в формате HFS +, это должно подавлять создание ._файлов, но я не знаю, какие параметры существуют в других неуказанных операционных системах для чтения томов HFS +.
Даниил
Не идеально, но ls --ignore="._*"как псевдоним или связывание клавиш имеет большое значение.
Шридхар Сарнобат

Ответы:

107

Вы не можете избежать их (но посмотрите ответ dot_clean Саида Зебардаста - их можно удалить из каталога, если это то, что вам нужно). Они созданы для хранения файловой информации, которая в противном случае была бы включена в расширенный атрибут на томах HFS + (Apple native) или Unix / UFS; в более ранних версиях Mac OS это была ветвь ресурса. Файловые операции Finder создадут их автоматически для хранения информации о значках, плюс Time Machine сохранит в них некоторую информацию, поэтому, если вы скопируете файл, сохраненный через TM, эта информация также будет скопирована.

(Это ничего нового, я заметил , что XP , а затем оставить различные экскременты вокруг , а также, хотя и не совсем так много.)

geekosaur
источник
50
Я согласен, "какашка" - точное описание :)
Drahcir
2
Я заметил, что мой Mac оставляет помехи на моем Linux-сервере Samba, когда я использую цветные метки (используя Path Finder 7). Для каждого цветного элемента есть файл ._ <coloritem>.
Джонатан Комар
5
У нас такая же ситуация на нашем файловом сервере linux samba на работе. Поскольку нам не нужны цветовые метаданные для файлов, мы использовали параметры veto files = /._*/и delete veto filesв нашем, smb.confчтобы предотвратить создание таких файлов. Вместо этого мы оставляем .DS_STOREфайлы такими, какие они есть, поскольку они полезны для настройки сортировки файлов, и для каждого каталога есть только один из них.
Герлос
5
По крайней мере, в Windows вы можете отключить это!
Тотимедли
7
Голосовали за использование "какашки", чтобы описать это.
Джордж П
60

Вы можете использовать команду dot_clean, чтобы удалить или объединить файлы ._:

dot_clean PATH_OF_FOLDER_OR_DRIVE

Если вы переместите файлы в linux, или у вас есть Git Bashна вашем компьютере, и есть доступ к findкоманде, вы также можете сделать это:

find . -type f -name '._*' -delete

И они ушли!

Саид Зебардаст
источник
3
Другие ответы на самом деле не отвечают "Как я могу избежать их?" часть. Это делает. Спасибо!
Кулак ниндзя
11
From man dot_clean: For each dir, dot_clean recursively merges all ._* files with their corresponding native files according to the rules specified with the given arguments. By default, if there is an attribute on the native file that is also present in the ._ file, the most recent attribute will be used.Эта команда не просто удаляет определенные точечные файлы, она может перезаписывать предыдущие / собственные атрибуты для каждой папки. Используйте с осторожностью.
Уильям Истед
Не уверен, упоминалось ли это здесь или нет, но, пожалуйста, будьте осторожны при удалении большого количества ._файлов. Они могут удалять значки файлов / папок, комментарии, ярлыки и т. Д. Убедитесь, что везде, где вы их
удаляете,
26

Цели файлов .DS_Store и ._

http://diigo.com/0qiwp для аннотированного представления http://lists.apple.com/archives/applescript-users/2006/Jun/msg00180.html, где Мэтт Дитерадж ( бывший инженер в Apple ) предлагает объяснения. Также arnotify »О происхождении .DS_Store  (2006-10-01).

Так как я видел потерю пользовательских данных (содержимого документа), когда ._копии были предотвращены или потеряны, я согласен, что это:

  • недопустимо, чтобы вещи «исчезали в эфире».

Цели ._ файлов

В дополнение к целям, изложенным в принятом ответе geekosaur , вот несколько примеров того, как Apple или сторонние приложения используют или требуют ._ в некоторых ситуациях…


Файл бизнес во время копирования Finder

Смотрите мой ответ на вопрос о переполнении стека.


NeoOffice использование устаревших кодов

Код типа HFS NO%Fбез кода создателя:

  • используется с осторожностью, только в случае необходимости.

NeoOffice пример 1

NeoOffice 3.2.1 Patch 5 сохраняет в JHFS +:

[macbookpro08-centrim:~] gjp22% xattr -l /Users/gjp22/Desktop/product\ of\ NeoOffice\ 3.2.1\ Patch\ 5.docx 
com.apple.FinderInfo:
00000000  4E 4F 25 46 00 00 00 00 00 00 00 00 00 00 00 00  |NO%F............|
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  |................|
00000020

NeoOffice, пример 2

NeoOffice 3.2.1 Patch 5 сохраняет на USB-флешку с MS-DOS FAT32, чистка от BlueHarvest:

2012-05-12 06:42:08.349 BlueHarvest[31146]: Deleted ._product of NeoOffice 3.2.1 Patch 5.docx in /Volumes/FAT32/example.

NeoOffice, пример 3

NeoOffice 3.2.1 Patch 5 сохраняет на томе, смонтированном в OS X с типом файловой системы webdav, а не в SharePoint, очистка с помощью BlueHarvest:

[macbookpro08-centrim:~] gjp22% mount | grep dav
https://www.box.net/dav/ on /Volumes/dav (webdav, nodev, noexec, nosuid, mounted by gjp22)
[macbookpro08-centrim:~] gjp22% xattr -l /Volumes/dav/product\ of\ NeoOffice\ 3.2.1\ Patch\ 5.docx 
[macbookpro08-centrim:~] gjp22% 
  • сохранение NeoOffice в webdavфайловую систему не включало расширенный атрибут
  • BlueHarvest не требуется.

Подсказка : когда Microsoft Office не удается webdavсохранить в Microsoft SharePoint (см. Ниже), NeoOffice успешно.


Microsoft использует устаревшие коды

Самая последняя версия офиса требует в код типа HFS и HFS код создатель , когда формат , такой как Microsoft Word ( .docx) будет выбран. Итак - кажется, что при сохранении в файловую систему, которая не поддерживает эти значения в com.apple.FinderInfoрасширенном атрибуте:

  • Microsoft Office невозможно надежно сохранить без создания нескольких ._файлов.

Microsoft пример 1

Word 2011 14.2.1 сохранить в томе, смонтированном в OS X с типом файловой системы webdav, а не в SharePoint, очистка с помощью BlueHarvest:

May 11 18:32:49 macbookpro08 BlueHarvest[14649]: BlueHarvest started.
May 11 18:38:37 macbookpro08 BlueHarvest[14649]: Deleted ._Word Work File D_1.tmp in /Volumes/dav.
May 11 18:39:57 macbookpro08 BlueHarvest[14649]: Deleted ._Hello world, this is Microsoft.docx in /Volumes/dav.
May 11 18:42:28 macbookpro08 BlueHarvest[14649]: Deleted ._Hello world, this is Microsoft.docx in /Volumes/dav.

Microsoft пример 2

Word 2011 14.2.2 (120421) сохранение example.docxв той же среде:

2012-05-12 08:01:07.692 BlueHarvest[41131]: Deleted ._Word Work File D_769960778.tmp in /Volumes/dav.

Пример Microsoft 3

Word 2011 14.2.2 (120421) сохранение another.docxв той же среде, выход, затем повторное открытие, редактирование, затем сохранение, редактирование, затем закрытие и сохранение:

2012-05-12 08:15:04.252 BlueHarvest[41131]: Deleted ._Word Work File D_.tmp in /Volumes/dav.
2012-05-12 08:18:48.735 BlueHarvest[41131]: Deleted ._another.docx in /Volumes/dav.
2012-05-12 08:21:12.658 BlueHarvest[41131]: Deleted ._Word Work File D_2.tmp in /Volumes/dav.

Подсказка : Microsoft Office 2011 не удается сохранить в Microsoft SharePoint, когда файловая система имеет тип, webdavпотому что SharePoint не поддерживает имена файлов, начинающиеся с точки .(точка). См. Раздел «Задать разные ответы». Можно ли смонтировать SharePoint как том в 10.6?


Тип и коды создателей: фон, Apple Developer

Apple начала поощрять сторонних разработчиков отказаться от кодов типов и кодов создателей более десяти лет назад. В Приложении B Руководства по программированию файловой системы « Типы файлов и коды создателей» указано, что коды:

как правило, устаревшие, вы можете увидеть их в старых файлах и приложениях, а также в некоторых местах системы.

Грэм Перрин
источник
Рекомендуемое чтение: Расширенные атрибуты: хорошо, не так хорошо, плохо. (2015-07-14)
Грэм Перрен
10

Эти файлы создаются операционной системой для ускорения поиска, хранения метаданных (данных, используемых ОС) о предпочтениях папки и т. Д. В Windows и OS X есть файлы такого типа. Ниже приводится описание этих файлов, извлеченное из http://annoying-file-be-gone.snack.ws/faq.html :

.DS_Store- Имя файла в операционной системе Apple OS X для хранения пользовательских атрибутов папки , таких как положение иконок или выбор фонового изображения (Читать подробнее )

.Spotlight-V100- Этот файл содержит информацию для ускорения функции «Spotlight Search». Удаление просто приведет к повторной индексации этой информации, если вы выполнили другой поиск Spotlight для элемента в этой папке.

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

.VolumeIcon.icns- Этот файл используется для хранения значка тома (USB-устройства), если для тома используется пользовательский значок, а не значок по умолчанию. Если вы хотите, чтобы устройство продолжало использовать этот значок по умолчанию, или если папка / устройство, которое вы хотите очистить, содержит приложение, вы можете сохранить этот файл в своей системе. В качестве примечания: если вы хотите создать собственный значок для вашего устройства, вы можете создать / загрузить .icnsфайл, переименовать его .VolumeIcon.icnsи поместить в папку / устройство.

.fseventsd- Этот файл используется в качестве буфера для демона событий файловой системы. Если вы используете программу, которая отслеживает эту папку / устройство, этот файл может использоваться для хранения временных данных.

.Trash& .Trashes- Эти папки используются для хранения удаленных элементов так же, как работает значок «Корзина» в доке. Если вам не нужна эта функция в папке / устройстве, вы можете очистить эту папку, чтобы сэкономить место.

.TemporaryItems- Этот файл используется ОС для хранения временных данных, когда файлы копируются / перемещаются / добавляются. Если вы используете какие-либо программы, которые обращаются к папке / устройству, которое вы хотите очистить, и не копируете и не перемещаете какие-либо файлы, то этот файл может просто содержать старые данные для кэширования.

user149666
источник
7

Чтобы свести к минимуму присутствие файлов подчеркивания точек на дисках, отличных от HFS +, вы можете использовать панель настроек BlueHarvest .

calum_b
источник
3
BlueHarvest - отличный продукт, но некоторые сторонние обзоры вводят в заблуждение. Результаты испытаний показывают, что создание не предотвращается; такое создание разрешено, и в соответствии с предпочтениями пользователя BlueHarvest может очистить часть созданного.
Грэм Перрин
5

проблема в том, как говорит @geekosaur, и ее трудно избежать, если вы используете файловые инструменты Apple.

Однако, если вы используете только инструменты командной строки и некоторые сторонние и никогда не записываете на USB с Finder, они не будут созданы.

user151019
источник
Поведение не ограничивается программным обеспечением Apple. Пример: Microsoft Office 2011 требует ._файлы при сохранении в файловых системах, которые не поддерживают коды типов HFS и коды создателей.
Грэм Перрин
5
@GrahamPerrin - я имел в виду файловые инструменты Apple для копирования и т. Д. Да, у любого приложения, использующего файловые вилки (например, библиотеки Apple), они будут. Если вы используете инструменты, которые просто используют библиотеки файлов BSD, то нет _ файлов.
user151019
3

Используйте, find . -name "._*" -type fчтобы подать файлы с локального пути и использовать, find . -name "._*" -type f -deleteчтобы удалить все файлы.

user3636223
источник
Добро пожаловать, чтобы спросить другого! Хотя ваш ответ показывает, как удалить файлы, он не отвечает на вопрос «Почему, Чего и как избегать в ОП».
bjbk
@bjbk Этот ответ говорит о том, как удалить файлы, как это делает ответ Саида Зебардаста. Я согласен, что никто не говорит, как их избежать и почему они появляются.
LarsH
1

Это действительно просто, NTFS (текущая Windows) FAT32 (старая Windows) имеет очень специфическую структуру данных для таких вещей, как разрешения, какая программа назначена для открытия этого файла, дата создания, дата изменения, теги, комментарии к файлам, значок и другие. метаданные. Вы также заметите, что те же свойства не будут отображаться в других ОС. (Дата создания IE может указывать на то, что она была 01.01.1990, и другие метаданные недоступны из другой ОС. Когда вы используете как машину, пишущую из HFS в NTFS или FAT32, так и машину, пишущую собственный FAT32 или NTFS, они. или ._ файлы вместе с файлами хранилища DS. Это показывает, что ОС имеет дело с фактором несовместимости различных элементов выше, которые не согласованы. Так что вы, вероятно, хотите сохранить эти файлы, если вы переключаетесь назад и вперед между ОС ' s, чтобы использовать эти файлы. Если вы используете только одну ОС или другую, убедитесь, что носитель (жесткий диск, SD-карта и т. Д.) Правильно отформатирован или у вас есть драйвер, позволяющий вашей ОС записывать данные в формат диска, не принадлежащий вашей ОС. (Они доступны как для OSX, что позволяет ему записывать файлы NTFS и FAT32 с использованием собственных свойств, так и для Windows 7 и 8 для записи на диски HFS + и EXFat (linux) с использованием собственных свойств.) Они не бесплатны, но если вы делать много взад и вперед, это удаляет лишние дублирующие данные, загромождающие диск.

user44674
источник
-1

Вы можете удалить их через FileZilla или аналогичный файловый менеджер.

Mazzieh71
источник
Не уверен, почему это было отклонено, так как большинство ответов, на которые проголосовали против, даже не дают решения. На мой взгляд, это самое простое решение ... Так как ._ и .DS_Store - это файлы, связанные с Finder, очевидным решением является избежать поиска. Лично я предпочитаю использовать Transmit, но Filezilla - отличная бесплатная альтернатива.
Брайан Уиллис
3
Я не отрицал, но это нежелательное предложение и пропускает намерение вопроса, который требует предотвращения, а не лечения. Кто хочет тратить половину своего времени на удаление этих файлов, которые продолжают генерироваться? Q: «Что мне делать с мусором в нашем городе?» A: «Возьми это и положи в мусорное ведро».
Шридхар Сарнобат
-1

Я использовал следующий метод для простоты. * удаление файла префикса на флэш-накопителях: извлеките флэш-накопитель из компьютера Apple, вставьте его в компьютер с ОС Windows, найдите на флэш-накопителе «. *. *», затем, когда при поиске отобразятся файлы с префиксом ._, удалите их. Я никогда не удаляю файлы .Trashes или .DS Store. Пока проблем нет. Я надеюсь, что я не создаю будущую проблему для себя.

Джим ВдПас
источник
1
Ручное удаление? Владение компьютером Windows, когда вы пользователь Mac? Я знаю, что вы просто документируете, что работает для вас, но я не могу представить, чтобы кто-то следовал вашему методу.
Шридхар Сарнобат
-1

Да, некоторые из нас используют компьютеры Mac и Windows, и я использовал этот метод. И если у вас есть USB с кучей файлов .jpgs, которые вы хотите воспроизвести в виде слайд-шоу, вы должны избавиться от этих надоедливых файлов ._, чтобы сделать это. После долгих поисков я нашел способ использовать мой mac для удаления файлов ._:

используя терминал:

  • ls -a перечислит все файлы, включая тот, который начинается с ._
  • удалить только один файл из каталога: rm -rf ._whateveryourfilenameis.jpg
  • удалить все ._файлы:rm -rf ._*
  • удалить ненужные каталоги, в том числе .Trashes :rm -r .Trashes*

Почистил мой USB прямо для использования в качестве входа телевизора

Т. Парламент
источник
-2

Будьте осторожны при удалении ._, связанных с Git, Visual Studio и Xcode! У меня есть приложение с большим количеством .mov и изображений, и эти файлы "._" оказались зафиксированы. Я удалил их с помощью изменений в Visual Studio Team Explorer и каким-то образом папка проекта увеличилась с примерно 500 МБ до 40 ГБ без добавления файлов ... все еще не уверена, что именно произошло, но я предполагаю, что это было связано с удалением этих файлов, поэтому каждый коммит был кэширован каждый .mov и изображение несколько раз, прежде чем я поймал. Я видел каждый .mov и .png повторяется 20-30 раз, когда в Finder> Все файлы.

Просто добавьте «._ *» в ваш файл .gitignore, и они не будут отображаться как измененный файл при использовании TFS для вашего проекта iOS Xcode.

whyoz
источник