У меня есть файл M на моем Mac (OS X ML 10.8.4) и файл P на моем компьютере (Win7). Файл P изначально был копией файла M, но теперь немного обновлен. Файл M имеет некоторые расширенные атрибуты.

Как я могу скопировать файл P в файл M, сохранив расширенные атрибуты в файле M?

Обычно, если я копирую и вставляю P в M через сетевой ресурс, расширенные атрибуты в M теряются.

Я ищу легко реализуемый / масштабируемый способ. cat P > M самом деле не вариант (даже не уверен, что это работает). Может ли rsync помочь здесь?

1 ответ1

0

Если есть еще файлы ._, вы можете объединить их с dot_clean:

$ ls -A
._test.txt test.txt
$ xattr -l test.txt
$ dot_clean .
$ ls -A
test.txt
$ xattr -l test.txt
com.apple.TextEncoding: utf-8;134217984

Вы можете скопировать атрибуты с помощью xattr -wx и -px:

xattr -wx attributename "$(xattr -px attributename source.txt)" target.txt

xattr печатает имена атрибутов, только если аргумент представляет собой один файл:

for f; do
  for a in $(xattr "$f"); do
    xattr -wx $a "$(xattr -px $a ~/Documents/Original/"$f")" "$f"
  done
done

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