目标:我正在尝试在我的 Makefile 中创建一个 PHONY 目标,以便当我运行命令“make backup”时,它会将所有以“~”结尾的文件移动到指定的备份文件夹中。
这是我当前的代码,之后我将解释该问题:C++ 语法(切换纯文本)
.PHONY: backup
backup:
@mkdir -p ./backup/include #make folder (don't complain if it already exists)
@mkdir -p ./backup/src #make folder (don't complain if it already exists)
@mv -fu *.h~ ./backup/include #move header file backups into desired folder
@mv -fu *.cpp~ ./backup/src #move source file backups into desired folder
问题:这很有效,但前提是文件“.h~” 和 “.cpp~”文件已经存在于 Makefile 的当前目录中。如果可以的话,我希望这个目标能够移动这些文件,如果没有文件需要移动,那么就保持安静。
错误信息:mv:无法统计“*.h~”:没有这样的文件或目录
*我在 linux(ubuntu)上,所以我的 shell 是“bash”
感谢您的帮助,我整晚都困在这个问题上,尝试了从 if 语句到“find”命令的各种命令。我只是想最后寻求一些帮助
答案1
尝试这个:
.PHONY: backup
backup:
@mkdir -p ./backup/include #make folder (don't complain if it already exists)
@mkdir -p ./backup/src #make folder (don't complain if it already exists)
@mv -fu *.h~ ./backup/include &> /dev/null #move header file backups into desired folder
@mv -fu *.cpp~ ./backup/src &> /dev/null #move source file backups into desired folder
应该将命令&>/dev/null
的所有输出重定向mv
到/dev/null
,这样就可以将其删除。