我有这个运行良好的批处理文件,但是我回到了 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/