linux - 查找文件并移动其文件夹

标签 linux shell find pattern-matching

我有大量文本文件,在 Debian Linux 上组织在一个大文件夹树中。我需要的是找到具有特定名称模式的所有文本文件,然后将包含的文件夹移动到目的地。

示例:

/home/spenx/src/a12/a1a22.txt
/home/spenx/src/a12/a1a51.txt
/home/spenx/src/a12/a1b61.txt
/home/spenx/src/a12/a1x71.txt

/home/spenx/src/a167/a1a22.txt
/home/spenx/src/a167/a1a51.txt
/home/spenx/src/a167/a1b61.txt
/home/spenx/src/a167/a1x71.txt

命令:

find /home/spenx/src -name "a1a2*txt"
mv /home/spenx/src/a12 /home/spenx/dst
mv /home/spenx/src/a167 /home/spenx/dst

结果:

/home/spenx/dst/a12/a1a22.txt
/home/spenx/dst/a167/a1a22.txt

感谢您的帮助。

SK

最佳答案

finddirnamemvxargs 的组合应该可以解决您的问题

find /home/spenx/src -name "a1a2*txt" | xargs -n 1 dirname | xargs -I list mv list /home/spenx/dst/

find 将获取文件列表

dirname 将提取文件的路径。 请注意,它一次只能接受一个参数

mv 会将源目录移动到目标

xargs 是允许将一个命令的输出作为参数传递给下一个命令的关键

有关 xargs 使用的选项的详细信息,请参阅其 man page只需在终端上执行 man xargs

关于linux - 查找文件并移动其文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19057656/

相关文章:

bash - 查找 - 抑制 "No such file or directory"错误

linux - 'find . -ls' 的输出格式是什么?

linux - 使用 awk 提取 key 的 BASH 脚本

Linux 上的 Python cmd 不会自动完成特殊字符或符号

android - 构建 Opencv4.3 Android 共享库错误

shell - 循环oneliner的 fish shell

shell - 通过 netcat session 的 vi

python - 为什么这个程序在 Linux Python Shell 上运行,而在 Windows 上却运行不了?

Linux查找同名文件复制到目标文件夹不覆盖

c++ - 找不到 operator= 的匹配项(在 vector<string> 中查找值)