
我運行了一個命令,該命令根據某些搜尋條件查找大量文件。它會傳回如下文件:
./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
使用 null 來終止檔案名稱可以處理可能包含空格、換行符號等的檔案名稱。
如果您已經建立了文件,您也可以使用它xargs
來處理文件:
xargs -a filename -I% mv "%" dest_dir
答案3
如果檔案名稱不包含任何空格,另一種選擇是
mv `search_command_here` dest_directory
(反引號語法也是一種 bash 主義,但問題明確指出這是在 Linux 上,所有主要的 Linux 發行版預設都使用 bash。)