在一个 bash 脚本中更改编码并移动文件

在一个 bash 脚本中更改编码并移动文件

我目前正在手动将文件列表从 DOS 编码为 Unix,以便我可以将文件从 x 移动到 y。我希望在一个脚本中自动完成此过程,但我完全是菜鸟。

这是伪代码:

  1. 转换list.txt为 unix 编码 ( :set ff=unix)

  2. 将文件从/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"/{}

相关内容