Nic*_*k.h 14 linux filesystems
将文件放在特定目录中时是否可以自动重命名文件?
例如,我有一个名为“dir0”的目录。我将一个名为“file1”的文件移动或复制到“dir0”。然后“file1”应该重命名为“file1_{current timestamp}”
Cal*_*leb 21
通常,您会在创建或移动文件时以编程方式执行此操作,但只要使用incron
. 使用这样incrontab -e
的行设置您的选项卡文件,当然还有您的路径:
/path/to/dir0 IN_MOVED_TO,IN_CREATE /path/to/script $@/$#
Run Code Online (Sandbox Code Playgroud)
然后在/path/to/script
写一个快速重命名动作。请注意,脚本也会为您创建的新文件调用,因此它必须测试该文件是否已正确命名。在这个例子中,它检查文件名的最后部分是否有一个十位数的秒数,如果没有,它会添加它:
#!/bin/bash
echo $1 | grep -qx '.*_[0-9]\{10\}' || mv "$1" "$1_$(date +%s)"
Run Code Online (Sandbox Code Playgroud)
编辑:当我第一次写这篇文章时,我时间不够,无法弄清楚如何在bash
这里进行模式匹配。Gilles 指出了如何在不调用 grep 的情况下使用 bash 中的 ERE 匹配来做到这一点:
#!/bin/bash
[[ ! ( $1 =~ _[0-9]{10}$ ) ]] && mv "$1" "$1_$(date +%s)"
Run Code Online (Sandbox Code Playgroud)
我认为这inotify
是在这种情况下可以使用的工具。在 Debian 中有inoticoming
用于执行文件创建操作的工具:
inoticoming --foreground /path/to/directory mv {} {}-"`date`" \;
Run Code Online (Sandbox Code Playgroud)
{}
将替换为文件名。
我提供的命令不完整 - 它会导致循环,因为当文件被重命名时,它会被识别为新的,所以它会mv
再次被编辑,依此类推。为了避免这种情况,--suffix
如果您在重命名之前知道文件中的后缀是什么,您可以使用选项。
归档时间: |
|
查看次数: |
8666 次 |
最近记录: |