Управление скрытыми файлами

Как я могу скопировать все скрытые файлы / каталоги в домашнем каталоге в отдельный каталог из командной строки? Я не смог найти много материала об использовании скрытых файлов.

3
задан 25 January 2015 в 23:24

2 ответа

Какие потребности быть сделанным

В принципе не сложный вопрос, однако, необходимо заботиться о нескольких вещах:

  • Вам нужно (как я понимаю) скопировать скрытые файлы/каталоги рекурсивно
  • Вы столкнетесь со столкновениями имени (двойные названия, я попробовал),

(Python) сценарий ниже заботится об обоих:

  • Это ищет файлы и каталоги рекурсивно в данном (источник-) каталог
  • это копирует найденные файлы, и каталоги в данный (предназначаются) для каталога
  • В случае дубликатов это переименовывает их к duplicate_1<filename>, duplicate_2<filename> (или каталог-) и т.д.

Сценарий

#!/usr/bin/env python3
import shutil
import sys
import os

directory = sys.argv[1]
target = sys.argv[2]

def handle(name):
    n = 1; name_orig = name
    while os.path.exists(target+"/"+name):
        name = "duplicate_"+str(n)+"_"+name_orig
        n = n+1
    return target+"/"+name

for root, dirs, files in os.walk(directory):
    for name in files:
        if name.startswith("."):
            subject = root+"/"+name
            newfile = handle(name)
            try:
                shutil.copyfile(subject, newfile)
            except:
                pass
    for dr in dirs:
        if dr.startswith("."):
            subject = root+"/"+dr
            newdir = handle(dr)
            try:
                shutil.copytree(subject, newdir)
            except:
                pass

Как использовать

Скопируйте сценарий выше в пустой файл, сохраните его как search_hidden.py. Выполните его с входными и выходными каталогами как аргументы:

python3 /path/to/search_hidden.py <source_directory> <target_directory>
2
ответ дан 25 January 2015 в 23:24

Если все скрытые файлы запускаются с точки (.), то можно сделать

cp .?* /path/to/directory

из каталога, в котором находятся скрытые файлы. Эта команда говорит, копируют все файлы, запускающиеся с точки (.? *) к каталогу указан. '*' подстановочный знак.

  • .?* требует по крайней мере одного символа после точки '.'
4
ответ дан 25 January 2015 в 23:24

Другие вопросы по тегам:

Похожие вопросы: