Я перемещаю файлы из файловой системы FAT32 в файловую систему EXFAT на Mac. Насколько я понимаю, FAT32 не поддерживает расширенные атрибуты файлов, поэтому он создает точечные файлы для каждого файла.

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

Это будет на Mac CLI.

Спасибо!

2 ответа2

1

Создайте исполняемый скрипт оболочки:

#!/bin/bash
for dotfile ; do
    path=${dotfile%/.*}
    name=${dotfile##*/.}
    if [[ -f $path/$name ]] ; then
        rm "$dotfile"
    fi
done

Затем запустите из верхней части каталога, который вы хотите очистить:

find -name '.*' -exec rm-dotfiles.sh {} +

Где rm-dotfiles.sh - это имя скрипта.

0

Удаление точечного файла только в том случае, если соответствующий не точечный файл существует, - это то же самое, что удаление соответствующего точечного файла для всех не точечных файлов. Так:

for f in *; do rm -f ".$f"; done

Обратите внимание, что * выше обычно соответствует не точечным файлам, если вы не выполнили shopt -s dotglob (в этом случае лучше всего выполнить сброс перед выполнением команды).

Каталог-рекурсивная версия будет:

for f in $(find -type f -name '[^.]*');do rm -f "$(dirname $f)/.$(basename $f)";done

(шаблон имени в find исключает точечные файлы)

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