我目前正在手动将文件列表从 DOS 编码为 Unix,以便我可以将文件从 x 移动到 y。我希望在一个脚本中自动完成此过程,但我完全是菜鸟。
这是伪代码:
转换
list.txt
为 unix 编码 (:set ff=unix
)将文件从
/folder
移动list.txt
到/folder2
(换句话说,/folder
包含一个大列表,但我只希望 中的文件list.txt
被移动)这就是我移动文件的方式:
while read line ; do cp /opt/home/first.last/Runs/clientPDFs/${line}.pdf ~/folder2 ; done < ~/list.txt
如果可能的话,我希望脚本list.txt
先检查一下。如果没有,它应该移动所有文件。
如果 list.txt
然后 while read line ; do cp /opt/home/first.last/Runs/clientPDFs/${line}.pdf ~/folder2 ; done < ~/list.txt
别的 while read line ; do cp /opt/home/first.last/Runs/clientPDFs/${line}.pdf ~/folder2
答案1
我可能会将其结构如下:
filelist="list.txt"
srcdir="/opt/home/first.last/Runs/clientPDFs"
dstdir="$HOME"
if [ -r "$filelist" ]; then
sed 's/\r$//' "$filelist" | xargs -I{} cp -t "$dstdir"/ -- "$srcdir"/{}.pdf
else
cp -t "$dstdir"/ -- "$srcdir"/*.pdf
fi
如果你愿意,你可以在 sed 命令中附加 pdf 扩展名,即
sed 's/\r$/.pdf/' "$filelist" | xargs -I{} cp -t "$dstdir" -- "$srcdir"/{}