![inotifywait - 仅使用文件名而不是完整路径重命名文件?](https://linux22.com/image/184980/inotifywait%20-%20%E4%BB%85%E4%BD%BF%E7%94%A8%E6%96%87%E4%BB%B6%E5%90%8D%E8%80%8C%E4%B8%8D%E6%98%AF%E5%AE%8C%E6%95%B4%E8%B7%AF%E5%BE%84%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6%EF%BC%9F.png)
如何使用此脚本语法仅使用文件名来重命名文件?
#!/bin/bash
WATCHED=/mnt/Watched
DESTINATION=/mnt/Destination
inotifywait -re CLOSE_WRITE,CREATE,MOVED_TO --format $'%e\t%w%f' -m $WATCHED |
while IFS=$'\t' read -r events new
do
cp -r "$WATCHED/$new" "$DESTINATION/"
done
当我运行这个时,我得到这个结果
cp: cannot stat '/mnt/Watched//mnt/Watched/newfile.mkv': No such file or directory
我知道,如果格式是这样设置的,--format %f
它会工作得很好,但我无法以这种方式设置它,因为我需要我遗漏的脚本其他部分的事件和完整路径。那么如何为我的 cp 命令提取并分配文件名呢?
谢谢
答案1
我更改"$WATCHED/$new"
为"$new"
per jordanm 的建议,现在可以了。