我有一个要求,一旦加载文件,我就为其创建一个 _load 文件。例如:- 如果加载了 temp_20180101.txt,我会为此创建 temp_20180101.txt_load。
现在,在下一次运行中,我想忽略目录中存在 _load 的所有文件并选择最新的可用文件。
请告知如何在一个 linux 命令中执行此操作
答案1
第一个示例(递归查找文件,使用find
):
find . -type f -name 'temp_*.txt' -exec sh -c '[ ! -e "$0"_load ]' {} ';' -print
temp_*.txt
这将输出当前目录(或下面)中与模式匹配但没有与之关联的相应文件的所有常规文件的名称temp_*.txt_load
。然后可以由另一个-exec
代替 来完成加载-print
。
第二个示例(更简单、显式的 shell 循环):
for name in ./temp_*.txt; do
if [ -f "$name" ] && [ ! -e "$name"_load ]; then
command_to_load "$name"
touch "$name"_load
fi
done
这是一个显式 shell 循环,仅查看当前目录中的文件。如果匹配的名称是常规文件并且没有关联的相应文件,则调用_load
某些加载命令并创建文件。$name
_load
人们可能想使用
command_to_load "$name" && touch "$name"_load
在 - 语句内if
仅_load
在加载顺利时创建文件。