我在 linux 机器上有一个目录,里面有数百个文件。它们是相对较短的文件,可以在一两秒内轻松地在命令行中显示和读取。有没有办法以自动方式将所有文件打印到命令行,类似于键入“cat *”,但每次打印之间有一到两秒的延迟,以便我可以读取每个文件?我尝试使用以下方法制作 bash 脚本:
cat $1
sleep 2
然后调用“bash script.sh *”,但它只打印其中一个文件然后停止。有什么建议么?
在脚本中使用循环:
#!/usr/bin/env bash
for f
do
cat "$f"
sleep 2
done
在您的 shell 提示符中(只要它是sh
兼容的 - 很可能):
for i in *; do
cat $i
sleep 2
done
也许 ?循环遍历所有文件 ( *
) 并cat
逐个输出。对于如此简单的事情,您真的不需要单独的 shell 脚本。
while [ -e "$1" ]
do
cat "$1"
shift 1
sleep 2
done
for i in $(find /path/to/files -type f -name \*.\*); do
cat $i;
sleep 2;
done
这应该可以正常工作:
find /path/to/files -type f
如果您希望关注某个特定的扩展,例如,请尝试以下操作:
find /path/to/files -type f -name \*.cfg
而不是循环,您可以在 find 中完成所有操作
find /path/to/files -type f -name \*.cfg -print -exec cat {} \; -exec sleep 2 \;
编辑添加凯文并没有失去理智我曾评论说 cat * 可能无法在包含大量文件的大文件夹中工作,他回复了我在他写评论时删除的评论:)