將多個檔案從檔案名稱清單移動到新資料夾

將多個檔案從檔案名稱清單移動到新資料夾

我在 list.txt 中有一個檔案名稱列表,其中有“abc1.png,abc2.png,abc3.png ....”。

但是,我不知道文件所在的目錄。

我想找到txt檔案中的所有文件,並將它們移動到一個新資料夾。

答案1

你需要逐行讀取每個檔案名,然後嘗試find使用該name選項,最後mv到達目標:

while IFS= read -r filename; do
    find /somewhere -type f -name "$filename" -exec mv -- {} /somewhere/else/ \;
done < file.txt

{}替換為找到的檔案路徑。

答案2

假設您的檔案名稱不包含“,”或換行符,並且每個檔案僅在 list.txt 中存在一次。您自然也必須將 newdirectory 變更為您想要的目錄。如果 list.txt 中的任何檔案遺失,則不會複製該檔案(並且不會提供任何資訊)。

sed -s "s/, /\\n/g" list.txt | xargs -IFILE -n1 find -name FILE -exec mv {} newdirectory \;

答案3

使用一些 bash 就很容易做到:

首先使用 find 尋找檔案並將輸出重新導向到另一個檔案:

for arg in $(cat list.txt);執行 find / -name $arg -print >> files_with_path.txt;完畢

然後 mv 檔:

for arg in $(cat files_with_path.txt);執行 mv $arg /your/dest/folder;完畢

相關內容