cp dir1/{file1,file2,file3} dir2 ## 可以实现文件的批量复制
cp -r dir1/ dir2/ ### 实现整个文件夹的复制,r参数表示,如果没有文件夹dir2/ 则创建一个,如果没有r参数会报错。
cp命令并不能直接识别正则表达示,如果要复制的文件很多,会写命令写到吐血。
可以用ls查看文件夹内的所有文件,再传递给grep 用正则表示示筛选,筛选后的文件名再传递给cp命令
需要注意的是cp 不能直接接收 grep的数据,需要用到xargs 命令
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
ls |grep 'M. 1. _M. 2. |M. [1-2]. _P. 18. '|xargs -i cp {} /u01/zhh/300Zeamays/300SCMS/
② 在linux下用mv命令可以批量的移动文件吗
可以用mv -p命令。
如:mv -p /home/vechina/samples/csi8/test_1 test_2 test_3 /home/vechina/samples/csi10
其中:/home/vechina/samples/csi8/是原路径;test_1、test_2、test_3是要移动的文件;/home/vechina/samples/csi10是目标路径。
mv命令介绍:
命令语法:语法:mv[选项]源文件或目录 目标文件或目录。
参数介绍:
-i:交互式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统会询问是否覆盖,用户输入‘y进行覆盖,输入'n'则不覆盖,这样可以避免误覆盖文件。
-f:禁止交互式操作。在mv操作要覆盖某已有的目标文件或目录时不给任何指示,默认覆盖。
如果所给目标文件(不是目录)已存在,此时该文件的内容将后备新文件覆盖,为防止用户用mv命令破坏另一个文件,使用mv命令移动文件时,最好使用i选项。
-b:覆盖文件前先对其进行备份
-S或--suffix=后缀:不理会通常的备份后缀
-u或--update:移动或覆盖目的文件时若日期比目的文件旧,且目的文件已经存在,则不执行覆盖文件命令
-t或--target-directory=目录:移动所以源参数到指定目录
-T或--no-target-directory:将DEST作为普通文件
--help:显示帮助信息
-v或--version:显示版本帮助信息
--verbose:显示执行的详细信息
③ linux如何复制移动文件
linux如何复制文件夹和移动文件夹
linux下文件的复制、移动与删除命令为:cp,mv,rm
一、文件复制命令cp
命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)
cp [option] source1 source2 source3 ... directory
参数说明:
-a:是指archive的意思,也说是指复制所有的目录
-d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身
-f:强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
-i:若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
-l:建立硬连接(hard link)的连接文件,而非复制文件本身
-p:与文件的属性一起复制,而非使用默认属性
-r:递归复制,用于目录的复制操作
-s:复制成符号连接文件(symbolic link),即“快捷方式”文件
-u:若目标文件比源文件旧,更新目标文件
如将/test1目录下的file1复制到/test3目录,并将文件名改为file2,可输入以下命令:
cp /test1/file1 /test3/file2
二、文件移动命令mv
命令格式:mv [-fiv] source destination
参数说明:
-f:force,强制直接移动而不询问
-i:若目标文件(destination)已经存在,就会询问是否覆盖
-u:若目标文件已经存在,且源文件比较新,才会更新
如将/test1目录下的file1复制到/test3 目录,并将文件名改为file2,可输入以下命令:
mv /test1/file1 /test3/file2
三、文件删除命令rm
命令格式:rm [fir] 文件或目录
参数说明:
-f:强制删除
-i:交互模式,在删除前询问用户是否操作
-r:递归删除,常用在目录的删除
如删除/test目录下的file1文件,可以输入以下命令:
rm -i /test/file1
复制:
CP命令
格式: CP [选项] 源文件或目录 目的文件或目录
选项说明:-b 同名,备分原来的文件
-f 强制覆盖同名文件
-r 按递归方式保留原目录结构复制文件
cp -Rf /home/user1/* /root/temp/
将 /home/user1目录下的所有东西拷到/root/temp/下而不拷贝user1目录本身。
即格式为:cp -Rf 原路径/ 目的路径/
移动:
mv ./WorkReport/web.xml ./WorkReport/WEB-INF/注:移动/WorkReport/web.xml文件到/WorkReport/WEB-INF/mv /data/new/data/old/注:移动/data/new到/data/old/文件夹下
注意点:移动文件夹的话就不要再加 / 了
如果是移动文件夹下的所有文件的话就可以文件夹后面跟上 /*
mv /data/new/* /data/old/
④ linux 移动大量文件
需要移动 460569份文件,直接mv 或者 rm 等,会提示参数列表过长。
使用
```
find . -type f -name 'pfam_scan_temp*.xls' -exec mv {} temp \;
```
可以操作更多一下的文件,但是文件过多还是会提示,如果可以进一步筛选倒也是可以用。
这个更方便,grep 中间的temp替换成你想匹配的文件名,最后的temp是你想移动后的目标目录:
```
ls |grep temp | xargs -t -I {} mv {} temp
```
⑤ linux按时间批量移动文件
find/data/paic/backup提交问题/aaa-mtime-day1-mtime+day2-name"abc_*.txt"-print0|xargs-I{}mv{}/data/paic/backup/201303/
查找day1天内day2天前的文件,具体天数需要仔细测试调整一下了。。
比如今天是2013-12-3
find/data/paic/backup提交问题/aaa-mtime-4-mtime+2-name"abc_*.txt"|xargs-I{}ls-lrt{}
查找/data/paic/backup提交问题/aaa 目录下2013-11-29到2013-12-01号的名字符合 abc_*.txt的文件
-mtime modified time
-atime access time
-ctime change time
⑥ Linux环境下,如何批量移动文件到对应文件夹,文件名和文件夹名都是有序的。
用for语句可以解决。相当如些脚本了。
⑦ 在linux下用mv命令可以批量的移动文件吗
linux下的mv命令可以批量移动文件或文件夹:
批量移动文件到home目录: mv file1 file2 file3 /home/
批量移动文件夹到home目录: mv dir1/ dir2/ dir3/ /home/
批量移动相同类型的文件或文件到到home目录: mv dir* /home/
请参看 mv --help的帮助信息.