擁有文件列表,使用一個命令移動它們

擁有文件列表,使用一個命令移動它們

我運行了一個命令,該命令根據某些搜尋條件查找大量文件。它會傳回如下文件:

./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。)

相關內容