grep 匹配模式的文件名并移动到所需的文件夹

2024-01-05

我在 .txt 文件中有一个模式列表。 [列表.txt]。对于list.txt中的每一行,我想找到以list.txt中指定模式开头的位置处的所有文件,然后将这些文件移动到另一个位置。 考虑一个示例案例。

at ~/home/ana/folder_a I have list.txt,看起来像这样...

list.txt

1abc
2def
3xyz

在这个位置,即/home/ana/folder_a/,有多个以list.txt中的模式开头的文件。所以,有像 1abc_a.txt、1abc_c.txt、1abc_f.txt、2def_g.txt、3xyz_a.txt 这样的文件

所以我想要实现的是:

for i in cat list.txt; do 
  ls | grep '^$i' [thats the pattern] | 
  mv [files containing the pattern] to /home/ana/folder_b/

请注意,在其他位置,即 /home/ana/folder_b/ 我已经创建了特定于每种模式的目录。

所以 /home/ana/folder_b/ 包含子目录,如 1abc/ 、 2def/ 、 3xyz/ 实际上,我希望将所有匹配模式“1abc”、“2def”和“3xyz”的文件从 /home/ana/folder_a/ 移动到 /home/ana/folder_b/ 中各自的子目录,这样 /home /ana/folder_b/1abc 将有 1abc_a.txt 、 1abc_c.txt 和 1abc_f.txt ; /home/ana/folder_b/2def/ 将有 2def_g.txt,/home/ana/folder_b/3xyz/ 将有 3xyz_a.txt


Grep's -f选项匹配文件中的模式,因此您不必循环遍历文件中的每一行shell:

$ ls                              # List all files in dir, some match, some don't
1abc_a.txt 1abc_c.txt 1abc_f.txt  2def_g.txt 3xyz_a.txt file1 file2 list.txt

$ cat list.txt                    # List patterns to match against 
1abc
2def
3xyz

$ ls | grep -f list.txt           # grep for files that only match pattern
1abc_a.txt
1abc_c.txt
1abc_f.txt
2def_g.txt
3xyz_a.txt

Pipe to xargs进行移动:

ls | grep -f list.txt | xargs -i -t mv {} ../folder_B
mv 1abc_a.txt ../folderB 
mv 1abc_c.txt ../folderB 
mv 1abc_f.txt ../folderB 
mv 2def_g.txt ../folderB 
mv 3xyz_a.txt ../folderB 

编辑:意识到我错过了问题的子目录部分,@Thor 的答案是最好的方法,但我认为你可能会从这个答案中找到一些用处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

grep 匹配模式的文件名并移动到所需的文件夹 的相关文章

  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm
  • 使用 python 更改目录

    我碰巧发现我无法从 python 代码中更改实际目录 我的测试程序如下 from os import system def sh script system bash c s script sh cd home sh pwd 的输出pwd
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • 如何使用存储在文本文件中的选项在 bash 中显示选择菜单? [复制]

    这个问题在这里已经有答案了 如何使用我存储在文本文件的各行中的选项为用户显示选择菜单 例如 我的文本文件 ingestion txt 如下所示 SOUP FTS CTS JDBC NEW 我希望用户看到这个 Please select an
  • 在 shell 脚本中将一个子字符串替换为另一个字符串

    我有 我爱苏子并结婚 我想将 苏子 更改为 萨拉 firstString I love Suzi and Marry secondString Sara 期望的结果 firstString I love Sara and Marry 要更换
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 当用户按下打印时运行脚本,并且在脚本结束之前不开始假脱机(linux,cups)

    我需要做的是结合用户按下打印来执行 python 程序 脚本 并且在该程序退出之前不要让打印作业假脱机 原因是打印驱动程序不是开源的 我需要更改用户设置 在本例中是部门 ID 和密码 通常是每个用户 但因为这是一个信息亭 具有相同帐户的不同
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • 在复杂的文件夹结构中进行测试

    我正在 golang 中构建一个设计模式存储库 为了运行所有测试 我使用这个 bash 脚本 有用 bin bash go test creational abstract factory go go test creational bui
  • 如何检测脚本是否正在被获取

    我有一个脚本 我不希望它调用exit如果它正在被采购 我想检查一下是否 0 bash但是如果脚本源自另一个脚本 或者用户从不同的 shell 获取它 例如ksh 有没有可靠的方法来检测脚本是否来源 稳健的解决方案bash ksh zsh 包
  • Shell 脚本中的块注释

    有没有一种简单的方法可以注释掉 shell 脚本中的代码块 In bash bin bash echo before comment lt lt END bla bla blurfl END echo after comment The a
  • Web 应用程序的带宽和流量模拟器?

    您能否建议如何创建一个测试环境来模拟 Web 应用程序中的各种类型的带宽和流量 或者也许是一个针对本地主机执行此操作的开源程序 我认为在编写网络应用程序时这是一个非常重要的主题 但这不是一个常见的主题 我能想象创建这种环境的唯一方法是在本地
  • 无法在 64 位 Linux 上从汇编 (yasm) 代码调用 C 标准库函数

    我有一个函数foo以汇编语言编写 并在 Linux Ubuntu 64 位上使用 yasm 和 GCC 编译 它只是使用以下命令将消息打印到标准输出puts 如下所示 bits 64 extern puts global foo secti
  • Ansible 输出格式选项

    是否有一个选项可以使用 ansible 而不是任何其他脚本 来格式化 ansible 输出 例如 name Show version sudo true hosts web front end tasks name Create yum c
  • 如何使用 bash 测试文件系统的目录限制

    我需要测试可以在文件系统 网络安装驱动器和本地 USB 驱动器 上创建多少目录和文件 我现在使用这个 bash 行 for i in 0 999999 do mkdir p i pushd i done 我知道可能可以做得更好 并且我想知道
  • PyPI 上的轮子平台约束有什么限制吗?

    是否有任何地方 PEP 或其他地方 声明关于 Linux 轮子上传范围的限制 PyPI http pypi io 应该有 具体来说 上传是否被认为是可接受的做法linux x86 64轮子到 PyPI 而不是manylinux1 x86 6
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file

随机推荐