首页 > 系统相关 >Linux从文件中逐行读取文件名并将匹配的文件复制到指定目录

Linux从文件中逐行读取文件名并将匹配的文件复制到指定目录

时间:2023-06-25 16:23:23浏览次数:51  
标签:复制到 文件 文件名 Windows 员工 Linux 清单 逐行

问题应该算挺常见的但是一句话还挺难说清楚,所以百度特别难搜。

场景就是,有一堆以员工名称命名的文件(名称可能还有字母数字等前后缀),现在给定一个员工清单,需要从这些文件中筛选出员工清单上列出的员工的文件,并复制到另外一个目录中。

输入:

1. 许多文件名包含员工名称的文件

2.一个清单文件,里面包含需要筛选的员工列表,每个员工名称一行

输出:

1.在清单上的员工的文件

 

研究了一下,需要综合使用awk、find、cp命令

awk用于逐行的处理清单文件,find用于文件名匹配,cp命令用于文件复制

命令如下:

awk  -F '/' '{print "*"$NF"*"}' name.txt | sort | uniq | xargs -i find . -name {} | xargs cp -t ./output

print命令用于把输出要匹配的文件名打印到管道中,使用"*"来拼接字符串来模糊匹配

 

因为是在Windows中用cygwin模拟的,源文件都是Windows里面的文件,所以在处理的过程中遇到了一些兼容问题,比如:

1. 源文件name.txt的编码和特殊符号的问题,Windows默认文本文件保存为GB2312编码,在Linux环境中处理后变成乱码,修改为UTF-8后问题解决。Windows默认的换行符是CRLF,Linux默认的换行符是LF,Windows格式在处理的时候后缀的*号无法正常拼接,换成Linux的换行符后问题解决。

2. 上面的命令复制出的文件默认没有权限,在Windows中打不开,使用chmod命令修改后问题解决。

标签:复制到,文件,文件名,Windows,员工,Linux,清单,逐行
From: https://www.cnblogs.com/wolfsky/p/17503211.html

相关文章

  • 如何刷新 DNS 缓存 (macOS, Linux, Windows)
    如何刷新DNS缓存(macOS,Linux,Windows)UnixLinuxWindows如何刷新DNS缓存(macOS,FreeBSD,RHEL,CentOS,Debian,Ubuntu,Windows)请访问原文链接:https://sysin.org/blog/how-to-flush-dns-cache/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org刷新或者......
  • Linux 如何刷新 DNS 缓存
    Linux如何刷新DNS缓存全文:如何刷新DNS缓存(macOS,Linux,Windows)UnixLinuxWindows如何刷新DNS缓存(macOS,FreeBSD,RHEL,CentOS,Debian,Ubuntu,Windows)请访问原文链接:https://sysin.org/blog/how-to-flush-dns-cache/,查看最新版。原创作品,转载请保留出处。......
  • Linux 服务器CPU超高如何快速定位
    Linux服务器CPU超高如何快速定位原创 senfel 架构集结号 2023-02-2411:07 发表于四川收录于合集#故障排查5个前言在生产环境中有时会遇见服务器CPU超高的问题,特别是重大版本发布后如果有内存泄露很容出现CPU超高,严重可能会达到100%。现在我们使用的服务器都是多核......
  • 六、kubernetes网络-linux网络虚拟化(二)
    1.6初识Linux隧道:ipip前文介绍的tun设备也叫作点对点设备,之所以叫这个名字,是因为tun经常被用来做隧道通信(tunnel)。我们可以通过命令iptunnelhelp查看IP隧道的相关操作。Linux原生支持下列5种L3隧道:·ipip:即IPv4inIPv4,在IPv4报文的基础上封装一个IPv4报文;·GRE:即通用路由封装......
  • Linux 导入
    Linux导入大纲发展历史系统目录结构Shell之Bash常用命令分享发展历史Unix和LinuxUnix操作系统在20世纪60年代构思完成并实现,并在1970年首次发布。由我们的C语言之父,丹尼斯·里奇和肯·汤普逊自行开发。它因容易获取与可移植性高而广泛被学术机构和工商企业采用、......
  • 创建Linux快捷指令
    要创建Linux快捷指令,可以按照以下步骤进行操作:1.打开命令行终端,进入你想要存储快捷指令的目录。2.创建一个新文件,文件名为你想要的快捷指令名称,例如myshortcut。使用文本编辑器打开这个新文件并添加你要执行的命令。例如,如果你想要创建一个叫做myshortcut的指令,当你运行它时会......
  • Linux usb 4. Device 详解【转】
    转自:https://blog.csdn.net/pwl999/article/details/120997525文章目录1.简介2.PlatformLayer2.1PlatformDevice2.2PlatformDriver3.UDC/GadgetLayer3.1GadgetBus3.2GadgetDevice3.2.1EndpointAlloc3.2.2EndPointAccess3.2.3UDCControl3.3GadgetDriver(Con......
  • Linux mem 2.8 Kfence 详解【转】
    转自:https://pwl999.blog.csdn.net/article/details/1244949581.原理介绍Kfence(KernelElectricFence)是Linux内核引入的一种低开销的内存错误检测机制,因为是低开销的所以它可以在运行的生产环境中开启,同样由于是低开销所以它的功能相比较KASAN会偏弱。Kfence的基本原......
  • 通过句柄恢复Linux下误删除的数据库数据文件
    环境介绍:OS:RedhatEnterPrise5.4DB:OracleEnterPriseDatabase11gR2(11.2.3.0)   在数据库正常运行时,运维人员在无意中将部分数据文件删除了,此时数据库管理员并不知道,且数据库运行正常,并没有立即抛出错误和告警;但是开发人员在对某张表进行更新的时候,正好这张表在被删除的......
  • Linux 无法从本地字符界面(tty1-tty6)登陆深度解析
    Linux无法从本地字符界面(tty1-tty6)登陆深度解析作者:吴伟龙(PrudentWoo) 问题描述:    每次装完Oracle数据库之后,本地的tty1-tty6就无法登陆,只能通过vtty或tty7图形终端登陆。 问题现象:     输入完用户名密码之后,自动弹回如下界面:日志信息:[root@nec3~]#tail......