通过 list.txt 将文件移动到子目录

通过 list.txt 将文件移动到子目录

我有这个运行良好的批处理文件,但是我回到了 Ubuntu 并需要将这些 .bat 转换为 .sh 文件。

这是我在 Windows 上的代码,它运行良好。

@echo off /u

cd /d "C:\Users\rivers\Desktop\data\sprite" 2>nul || exit /b 
           
for /f ^usebackq^tokens^=*^delims^= %%i in =;(` 
     type .\"ListedFiles.txt" ^| findstr . `);= do 2>nul =;( 
         robocopy .\. "%%~dpi\." "%%~nxi" /mov /njh | find "100%"
        );= || echo; Check Your Folder\File path: "%%~dpi" "%%~nxi"

使用此代码片段将文件移动到其文件夹。它循环遍历所有文件并将它们发送到 ListedFiles.txt 中的目标文件夹。我需要复制此操作并使其在 Linux 上运行。我已经尝试过的方法似乎不起作用。

while IFS= read -r file; do cp --parents -f -r "$file" ~/Desktop/Folder/; done < ~/Desktop/ListedFiles.txt

编辑:ListedFiles.txt 的结构如下: /home/user/Documents/atgrf/guild_r.bmp 大多数目录都有 1 到 3 个子目录。

答案1

rsync今天早上我设法使用和解决了我的答案--files-from

rsync -a /home/user/Desktop/data/ --files-from=/home/user/Desktop/ListedFiles.txt /home/user/Desktop/Folder/

相关内容