我在 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;完畢