如何从命令行将主目录中的所有隐藏文件/目录复制到单独的目录中?我找不到大量有关隐藏文件用法的资料。
答案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>