我正在尝试在终端中按顺序列出丢失的文件。虽然这里存在许多答案,但它们不够通用,我设法根据我的情况进行调整。所以,如果你能做出一个足够通用的答案,对更多人有用,请去做。
我正在ls {369..422}.avi >/dev/null
列出丢失的文件,但我不能使用 * 来匹配以 .avi 结尾的任何内容。我怎样才能做到这一点?
数字不在文件的末尾,而是在中间。所以我应该需要类似的东西*numbers*.avi
ls *{369..422}*.avi >/dev/null
Run Code Online (Sandbox Code Playgroud)
这将首先生成像这样的模式
*369*.avi
*370*.avi
*371*.avi
*372*.avi
*373*.avi
*374*.avi
Run Code Online (Sandbox Code Playgroud)
通过大括号扩展,然后ls
将使用这些模式执行,对于无法扩展到当前目录中的名称的每个模式,它都会给您一条错误消息。
或者,如果您*
的名称中没有包含任何文件:
for name in *{369..422}*.avi; do
case "$name" in
'*'*) printf '"%s" not matched\n' "$name" ;;
esac
done
Run Code Online (Sandbox Code Playgroud)
这依赖于这样一个事实,即如果模式与当前目录中的名称不匹配,则该模式将保持未扩展状态。这为您提供了一种可能对丢失的文件做一些有用的事情的方法,而无需解析ls
.