我真的不明白他的问题我错在哪里。第一部分是。
列出 /etc 中名称中包含 1 个或多个数字的所有文件和目录名称。请记住在 ls 命令中使用“-d”,并且不要进入子目录(即不递归)。将此列表保存在 caine 的主目录中,作为名为“digit”的文件。当 CD 到 /etc 时执行“ls”命令,这样您的名称就可以避免“/etc/”出现在它们前面。
这是通过以下命令完成的:
ls -d *[0-9]* > digit
然而,问题的第二部分是;
重做上一个问题,除了这次在 /home/caine 中 CD 时重复练习。将输出保存在 digital2 中。 “digit”和“digit2”应该相同,除了“digit2”中所有文件名都将以“/etc/”开头。
我认为下面的代码可以工作;
ls -d ../../etc/ *[0-9]* > digit2
当我查看文件的内容时,它似乎忽略了我使用 * 和数字设置的参数,我尝试移动该语句,但我很困惑为什么这不起作用。
任何建议,或者对我出错的地方的解释,将不胜感激。
我知道这可以通过 grep 来实现,但即使我已经开始学习它,我仍然很想知道我如何无法获得正确的语法!
答案1
您添加了一个额外的空格,它将您的 glob 分成两个单独的参数:
ls -d ../../etc/ *[0-9]* > digit2
# ^ space
它应该是
ls -d /etc/*[0-9]* > digit2
../..
除非您确实喜欢查看文件中的所有这些点,否则不需要。