linux下拷贝命令中的文件过滤操作记录

在日常的运维工作中,经常会涉及到在拷贝某个目录时要排查其中的某些文件。废话不多说,下面对这一需求的操作做一记录:

linux系统中,假设要想将目录A中的文件复制到目录B中,并且复制时过滤掉源目录A中的文件a和b
做法如下:
#cd A
#cp -r `ls |grep -v a |grep -v b| xargs` B
注意:
1)上面在cp命令执行前,最好提前cd切换到源目录A下,不然就要在ls后跟全路径,否则就会报错。
2)命中中的xargs参数加不加效果都一样,不过最好是加上,表示前面的命令输出
3)grep -v中的-v表示过滤,有多少文件的过滤需求,就执行多少个grep -v操作
4)命令替换``可以用$()代替

实例如下:
将/tmp/bo目录中的文件复制到/tmp/test目录中,复制时过滤f和s文件!
[[email protected] bo]# ll /tmp/bo
total 12
drwxr-xr-x 2 root root 4096 Nov 3 17:55 10
drwxr-xr-x 2 root root 4096 Nov 3 17:55 20
drwxr-xr-x 2 root root 4096 Nov 3 17:55 30
-rw-r--r-- 1 root root 0 Nov 3 17:33 4
-rw-r--r-- 1 root root 0 Nov 3 17:33 5
-rw-r--r-- 1 root root 0 Nov 3 17:33 d
-rw-r--r-- 1 root root 0 Nov 3 17:33 f
-rw-r--r-- 1 root root 0 Nov 3 17:33 s
-rw-r--r-- 1 root root 0 Nov 3 17:33 w
[[email protected] tmp]# ls /tmp/test/
[[email protected] tmp]#

[[email protected] tmp]# cd /tmp/bo/
[[email protected] bo]# cp -r $(ls |grep -v f|grep -v s|xargs) /tmp/test
[[email protected] bo]# ls /tmp/test
10 20 30 4 5 d w

以上的方法也适用于远程拷贝scp操作,比如:
[[email protected] resin]# scp -r `ls|grep -v log|xargs` [email protected]:/opt/resin/

另外:
上面的需求也可以使用for循环方式进行操作。注意for循环中使用绝对路径!
[[email protected] tmp]# cd /tmp
[[email protected] tmp]# ls bo
10 20 30 4 5 d f s w
[[email protected] tmp]# ls test
[[email protected] tmp]# for i in `ls /tmp/bo|grep -v f|xargs`;do cp -r /tmp/bo/$i /tmp/test;done
[[email protected] tmp]# ls /tmp/test/
10 20 30 4 5 d s w

时间: 2024-10-11 00:02:33

linux下拷贝命令中的文件过滤操作记录的相关文章

Linux下磁盘分区、挂载、卸载操作记录

Linux下磁盘分区.挂载.卸载操作记录. 操作环境:CentOS release 6.5 (Final) Last login: Wed Oct 26 17:25:27 2016 from 118.230.194.76 [[email protected] ~]# [[email protected] ~]# fdisk -l Disk /dev/sda: 536.9 GB, 536870912000 bytes 255 heads, 63 sectors/track, 65270 cylin

Linux下Maven私服Nexus3.x环境构建操作记录【转】

Maven介绍Apache Maven是一个创新的软件项目管理和综合工具.Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件.Maven最强大的功能就是能够自动下载项目依赖库.Maven提供了开发人员构建一个完整的生命周期框架.开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期.在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作.由于大部分项目的设置都很简单,并且可重

Linux下vi命令大全(文件修改)

1. 文件操作  vi FileName 打开文件 FileName,并将光标置于第一行首. vi +n FileName 打开文件 FileName,并将光标置于第 n 行首. vi + FileName 打开文件 FileName,并将光标置于最后一行. vi + /pattern File 打开文件 File,并将光标置于其中第一个于 pattern 匹配的字符串处. vi –r FileName 在上次正用 vi 编辑 FileName 发生系统崩溃后,恢复FileName.   2. 

linux下用命令行解压缩文件

tar -zxvf install_flash_player_11_linux.x86_64.tar.gz 这是最一般的做法,其中tar后面的参数"zxvf"其实每个字母都是可选的.具体解释如下 ar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思): -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压

Windows命令行(cmd)下快速查找文件(类似Linux下find命令)

for /r 用法简介 用了Linux下的find命令,觉得查找文件很方便,那么在windows下有没有类似的命令可以遍历目录并通过文件名找到文件呢?答案是有: Windows下的 for /r 命令具有与Linux下 find 命令类似的功能,使用语法上类似: find /r 目录名 %变量名 in (匹配模式1,匹配模式2) do 命令 匹配模式可以是通配类似于: *.jpg:所有.jpg后缀的文件 *test*:所有名称中包含test的文件 注意: 1. 匹配模式中至少带上1个*号 2.

linux下find命令和文件的三种时间

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 1.命令参数:     pathname: find命令所查找的目录路径.例如用.来表示当前目录,用/来表示系统根目录.   -print: find命令将匹配的文件输出到标准输出

整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题

分类: MakeFile/Make/GCC/LD2010-11-20 23:15 535人阅读 评论(0) 收藏 举报 转者的话: 本文详细介绍了gcc 编译时 搜索头文件的路径以及方式, 编译时寻找lib库的方式, 以及运行时加载库的寻找方式!!!非常之经典啊!以后有新的知识都汇总到这里来了! 在交叉编译的时候我们需要用到其他的库,在config时候可以通过“-I”来指定头文件目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法. 看下文的红色部分. 有大量的环境变量可供设置以影响 G

linux下常用命令备忘

转自:Linux 命令集锦 linux下查看监听端口对应的进程 # lsof -i:9000 # lsof -Pnl +M -i4 如果退格键变成了:"^h". 终端连接unix删除退格键,按住CTL键同时按delete Linux搜索 # find / -name "xxx.conf" 查看linux是32位还是64位的命令 #file /sbin/init #getconf LONG_BIT #getconf -a 在Linux和Windows下都可以用nslo

Linux下ls命令显示符号链接权限为777的探索

Linux下ls命令显示符号链接权限为777的探索 --深入ls.链接.文件系统与权限 一.摘要 ls是Linux和Unix下最常使用的命令之一,主要用来列举目录下的文件信息,-l参数允许查看当前目录下所有可见文件的详细属性,包括文件属性.所有者.文件大小等信息.但是,当其显示符号链接的属性时,无论其指向文件属性如何,都会显示777,即任何人可读可写可执行.本文从ls命令源码出发,由浅入深地分析该现象的原因,简略探究了Linux 4.10下的符号链接链接.文件系统与权限的源码实现. 关键词:Li