我有大量文本文件,在 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
最佳答案
find
、dirname
和 mv
与 xargs
的组合应该可以解决您的问题
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/