操作隐藏文件

操作隐藏文件

如何从命令行将主目录中的所有隐藏文件/目录复制到单独的目录中?我找不到大量有关隐藏文件用法的资料。

答案1

如果所有隐藏文件都以点 (.) 开头,那么您可以执行

cp .?* /path/to/directory

从隐藏文件所在的目录中。此命令表示将所有以点(.?*)开头的文件复制到指定的目录。'*'是通配符。

  • .?*要求点“.”后至少有一个字符

答案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>

相关内容