linux - 用于复制 (scp) 和重命名的 Shell 脚本

标签 linux bash shell copy rename

我的服务器中有一个文件夹,其中包含一些 PDF 文件。我的问题是,我必须复制到其他服务器并重命名它。

名称格式是这样的“yymmdd_hhmmss_FileNo_PdfNo.pdf”

yymmdd_hhmmss_001_AC1.pdf
yymmdd_hhmmss_001_AC2.pdf
yymmdd_hhmmss_002_AC1.pdf
yymmdd_hhmmss_003_RCY1.pdf

在复制这些文件时,我想重命名每个文件。 名称格式是这样的“FileNo_PdfNo_yymmddhhmmss.pdf”

001_AC1_yymmddhhmmss.pdf
001_AC2_yymmddhhmmss.pdf
002_AC1_yymmddhhmmss.pdf
003_RCY1_yymmddhhmmss.pdf

我想为此编写一个 shell 脚本 (bash)。请给我一些想法或一些与此相关的示例脚本。

最佳答案

使用 GNU tar:

tar -cf - *.pdf | ssh user@server "tar -xvf - --transform='s/\(.\{6\}\)_\(.\{6\}\)_\(...\)_\(.\{3,\}\)\.pdf/\3_\4_\1\2.pdf/' --show-transformed-names"

如果您想更改目标目录,请使用 tar 的选项 -C


参见:The Stack Overflow Regular Expressions FAQ

关于linux - 用于复制 (scp) 和重命名的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37511460/

相关文章:

svn - 如何使svn自动检测文件的删除和移动(shell,Ubuntu)

mysql - 如何调用此 shell 脚本将 mysqldump 转换为 SQLite 兼容语法

linux - slurm SBATCH - 多个节点,相同的 SLURMD_NODENAME

python - 将 bash 参数传递给 python 脚本

linux - 如何隐藏脚本的输出,同时解析内容以显示反馈?

bash - 如何处理 bash 的平局条件

c++ - 将 clangd stderr 重定向到文件而不是控制台

linux - -fprofile-arcs 链接器选项是什么意思?

linux - 如何在 Linux 终端中获取另一个程序的文件路径?

c - 错误 : `TFD_NONBLOCK' undeclared (first use in this function)