Как я могу скопировать все скрытые файлы / каталоги в домашнем каталоге в отдельный каталог из командной строки? Я не смог найти много материала об использовании скрытых файлов.
В принципе не сложный вопрос, однако, необходимо заботиться о нескольких вещах:
(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>
Если все скрытые файлы запускаются с точки (.), то можно сделать
cp .?* /path/to/directory
из каталога, в котором находятся скрытые файлы. Эта команда говорит, копируют все файлы, запускающиеся с точки (.? *) к каталогу указан. '*' подстановочный знак.
.?*
требует по крайней мере одного символа после точки '.'