查找文件并移动文件夹

Kil*_*átó -3 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
Run Code Online (Sandbox Code Playgroud)

命令:

find /home/spenx/src -name "a1a2*txt"
mv /home/spenx/src/a12 /home/spenx/dst
mv /home/spenx/src/a167 /home/spenx/dst
Run Code Online (Sandbox Code Playgroud)

结果:

/home/spenx/dst/a12/a1a22.txt
/home/spenx/dst/a167/a1a22.txt
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

SK

jks*_*hah 5

组合find,dirnamemv与之一起xargs解决您的问题

find /home/spenx/src -name "a1a2*txt" | xargs -n 1 dirname | xargs -I list mv list /home/spenx/dst/
Run Code Online (Sandbox Code Playgroud)

find 将获取文件列表

dirname将提取文件的路径.请注意,它一次只能使用一个参数

mv 将源目录移动到目标

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

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