我运行了一个命令,根据一些搜索条件找到了很多文件。它返回的文件如下:
./somepath/somepath/file.something
./asdf/asdf/s.php
./etc/a.php
./a/b/c/d/e/f/g.jpg
所以我想知道,如果我将这个输出捕获到一个文件中(即每行一个文件),有人能帮我编写一个命令来遍历该文件并将文件逐个移动到指定的目录吗?
先感谢您。
答案1
while read -r filename
do
mv -- "$filename" directory
done < list_of_files.txt
未经测试(我在运行 Windows 的工作电脑上)但应该可以工作。
答案2
your_command | xargs -I% mv "%" dest_dir
如果您的命令是find
或者您有某种方式以空值终止文件名:
your_command | xargs -0 -I% mv "%" dest_dir
或者
find [find-args] -print0 | xargs -0 -I% mv "%" dest_dir
使用空值终止文件名可以允许它处理可能包含空格、换行符等的文件名。
如果您已经创建了文件,您还可以使用它xargs
来处理它:
xargs -a filename -I% mv "%" dest_dir
答案3
如果文件名不包含任何空格,则另一个选项是
mv `search_command_here` dest_directory
(反引号语法也是 bash 主义,但问题明确指出这是在 Linux 上,并且所有主流 Linux 发行版默认都使用 bash。)