如何在 Ubuntu 中复制和移动多个数字文件?

如何在 Ubuntu 中复制和移动多个数字文件?

我的 Raspberry Pi 上有一系列延时文件,我想将它们复制到存储卡上。我必须将移动分成两批(源文件夹的大小是目标文件夹的两倍)。这是我一直在编写的脚本(一整天!)。我仍然无法让它运行。

cp -v /home/pi/timelapse   "201712140[20331-45246] {} /media/pi/FC33-7BFB1/timelapse

源文件夹文件序列以 15 秒为增量从20171214020331-开始20171214045246

答案1

cp 命令接受一个或多个源文件,后跟一个目标。如果有多个源文件(如您的情况),则目标必须是目录(所有文件都将复制到该目录)。根据评论,您误用了方括号。我不知道花括号会做什么,但很可能不是您想要的。假设您的第一个源文件是 /home/pi/timelapse/20171214020331,文件名不包含空格,并且目标目录 /media/pi/FC33-7BFB1/timelapse 已经存在,请尝试

cp /home/pi/timelapse/201712140[23]* /media/pi/FC33-7BFB1/timelapse/

如果复制了以 2017121402 和 2017121403 开头的所有文件,则可以使用 [45] 等移动下一组。这有点麻烦,但可以帮助您开始探索之旅……

答案2

您可以尝试这个来复制文件,regex在范围内查找

for file in 201712140*
do
    matched="$(echo "$file" | grep -oP '(?<=201712140)([^.]+)')"
    if [[ $matched -ge 20331 && $matched -le 45246 ]]; then
        cp -v $file /your/location
    fi
done

只需在源目录中运行此脚本即可。将其保存在文件中xyz.sh 并运行bash xyz.sh

相关内容