命令行 将多个特定文件从一个文件夹复制到另一个文件夹

分享于 

2分钟阅读

ubuntu

  繁體

只需从命令行一次复制多个文件

有几种方法可以实现这个,我见过的最容易的是


cp /home/usr/dir/{file1,file2,file3,file4} /home/usr/destination/



语法使用cp命令,后跟所需文件所在目录的路径,所有要复制的文件都用方括号括起来并用逗号分隔。

或者,如果所有文件都有相同的前缀,但结尾不同,则可以执行以下操作:


cp /home/usr/dir/file{1..4} ./



将复制file,file,file3和file4的位置。

使用python处理重复项


import os,sys,shutil


### copies a list of files from source. handles duplicates.


def rename(file_name, dst, num=1):


 #splits file name to add number distinction


 (file_prefix, exstension) = os.path.splitext(file_name)


 renamed ="%s(%d)%s" % (file_prefix,num,exstension)



 #checks if renamed file exists. Renames file if it does exist.


 if os.path.exists(dst + renamed):


 return rename(file_name, dst, num + 1)


 else:


 return renamed



def copy_files(src,dst,file_list):


 for files in file_list:


 src_file_path = src + files


 dst_file_path = dst + files


 if os.path.exists(dst_file_path):


 new_file_name = rename(files, dst)


 dst_file_path = dst + new_file_name



 print"Copying:" + dst_file_path


 try:


 shutil.copyfile(src_file_path,dst_file_path)


 except IOError:


 print src_file_path +" does not exist"


 raw_input("Please, press enter to continue.")



def read_file(file_name):


 f = open(file_name)


 #reads each line of file (f), strips out extra whitespace and 


 #returns list with each line of the file being an element of the list


 content = [x.strip() for x in f.readlines()]


 f.close()


 return content



src = sys.argv[1]


dst = sys.argv[2]


file_with_list = sys.argv[3]



copy_files(src,dst,read_file(file_with_list))




COM  文件  COMM  files  Comma  命令行