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

这篇具有很好参考价值的文章主要介绍了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命令修改后问题解决。文章来源地址https://www.toymoban.com/news/detail-499612.html

到了这里,关于Linux从文件中逐行读取文件名并将匹配的文件复制到指定目录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux中文件名修改的多种方法

    找一个不算漂亮的普通女孩,一起柴米油盐,一起日出日落,一起田间地头,一起春花冬雪!要一个不算大的小房子,生两个健康可爱的宝宝,这样就很好。。。。。。 简介: 在Linux系统中,通过命令行界面可以方便地修改文件名。本篇博客将介绍几种常见的方法,包括 m

    2024年01月18日
    浏览(32)
  • 如何在 Linux 中批量改变文件名?

    在Linux中,使用 \\\"rename\\\" 命令可以批量修改文件名。具体步骤如下: 1. 打开终端并进入你要批量修改文件名的目录: ``` cd /path/to/directory ``` 2. 使用 \\\"rename\\\" 命令来修改文件名。例如,将所有的 \\\".txt\\\" 文件扩展名改为 \\\".md\\\" 扩展名,可以使用以下命令: ``` rename \\\'s/.txt$/.md/\\\' *.txt ```

    2024年02月05日
    浏览(32)
  • linux修改文件名的三种方法

    我们在使用linux系统过程中为了便于记忆或整理维护,经常需要对文件名进行修改,下面文章介绍了linux系统的三种修改文件名称的方式。 语法:mv [options] source dest 参数说明: 示例:将a.txt修改为a1.txt 语法:cp [options] source dest 参数说明: 示例:将a.txt修改为a1.txt,通过cp命令

    2024年02月02日
    浏览(40)
  • linux 再文件夹目录下,批量替换文件名、文件内容字符串

    基本使用命令 具体使用命令方法 1.替换文件内容 搜索当前目录下所有.DTA文件,并将文件中字符串\\\"string1\\\",替换为\\\"string2\\\" 2.替换文件名 搜索当前目录下所有.DTA文件,并将文件名中字符串\\\"string1\\\"替换为\\\"string2\\\". 3.批量替换文件内容 该目录及子目录下所有文件,将文件中所有的字符

    2024年02月16日
    浏览(34)
  • Linux中修改文件名的三种方法

      在Linux操作系统中,对文件名的修改是一项常见且至关重要的操作。文件名修改的需求多样,包括但不限于:促进文件组织的清晰性、确保命名符合特定规则,以及简单地修复拼写错误。与通过图形界面直接下载后修改文件名相比,采用命令行方式进行文件名修改,能够带

    2024年01月17日
    浏览(43)
  • Linux 服务器文件名乱码常见问题

    在 Linux 服务器中,文件名乱码是一个常见的问题,特别是当涉及到多语言字符集时。这可能导致文件名显示异常,无法正确识别和处理文件。本文将介绍一些常见的文件名乱码问题以及相应的解决方法。 字符集问题 文件名乱码的一个常见原因是字符集不匹配。当文件名包含

    2024年02月05日
    浏览(49)
  • Linux下修改文件名的三种方法

    在Linux系统中,有多种方法可以用来修改文件名。以下是三种常用的方法: 1. 使用 mv 命令 mv 命令是最基本也是最直接的方式来重命名文件。它的基本语法是: 打开终端 :首先,你需要打开一个命令行终端。 定位到文件所在目录 :使用 cd 命令进入包含你想要重命名的文件的

    2024年01月17日
    浏览(42)
  • Linux命令手册-通过文件名查找文件(find、which、locate)(详解)

    目录 一、find命令 1、语法格式 2、选项说明 3、命令示范 二、which命令 1、语法格式 2、命令示范 三、locate命令 1、语法格式 2、命令示范: find命令在Linux中作为文件查找使用频次很高,主要有以下几种方式。 1、语法格式 find [路径] [选项] [操作] 路径:可以指定搜索的文件在

    2024年02月15日
    浏览(27)
  • Linux批量快速修改文件名的三种方法

    在Linux中, 批量重命名文件 是一项常见且有用的操作。以下是三种常用的批量重命名文件的方法,每种方法都附有示例。这些方法既可以适用于新手,也适用于更有经验的用户。 话不多说,直接上干货! rename 命令 rename命令是一种强大的批量重命名工具,它支持使用正则表

    2024年04月11日
    浏览(43)
  • linux修改文件名的三种方法有哪些

    在Linux中,你可以使用以下三种方法来修改文件名: 使用  mv  命令: mv  命令是用于移动或重命名文件和目录的常用命令。要修改文件名,可以使用以下语法: php复制代码 mv 旧文件名 新文件名 例如,要将文件  oldname.txt  重命名为  newname.txt ,可以运行以下命令: bash复制

    2024年01月17日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包