execdir和重命名命令在一起?

时间:2014-07-11 19:38:45

标签: bash rename

我问一个关于查找,复制和重命名的问题,可以在Find, copy, rename within the same directory

找到

答案很棒并且解决了我在该线程中遇到的问题,但它确实提出了另一个关于如何重命名文件的一部分的问题....例如,当运行此命令时;

find /home/ian/Desktop/TEST/ -type f -mmin -1 -execdir echo cp \{} \{}_backup \;

并且该文件名为TEST_MASTER,如何运行上述文件并使用名为TEST_BACKUP的新文件而不是TEST_MASTER_BACKUP?

我可以通过直接运行新的重命名命令来解决这个问题,如下所示;

find /home/ian/Desktop/TEST/ -type f -mmin -1 -execdir cp \{} \{}_backup \; ;
rename __MASTER_backup _backup *MASTER_backup ;

但必须有办法一次性完成这项工作吗?

一切顺利, 伊恩

2 个答案:

答案 0 :(得分:1)

您可以使用此find命令:

find /home/ian/Desktop/TEST/ -type f -mmin -1 -execdir bash -c 'cp "$1" "${1%%_*}_BACKUP"' - '{}' \;

答案 1 :(得分:0)

我的回答与 anubhava 几乎相同:

find /home/ian/Desktop/TEST/ -type f -name '*_MASTER' -mmin -1 -execdir \
         bash -c 'mv $1 ${1/MASTER/BACKUP}' - \{} \;

这将只包含 备份*_MASTER文件。如果您还需要备份其他文件(并在最后添加额外的_BACKUP,请投票给anubhava!