运行所有的递归列表 / var / log和redirect中的文件 标准输出到一个名为的文件 您的主目录中的lsout.txt。 完成这个问题而不离开 你的主目录。
An:ls -R / var / log /> /home/bqiu/lsout.txt
我认为上面的bash命令不正确。因为我发现它存储的是:
$ ls -R /var/log
/var/log:
empty.txt setup.log setup.log.full tmp
/var/log/tmp:
fake.txt subfolder
/var/log/tmp/subfolder:
这是否意味着解决了问题?
我估计不是。
因为它包含的“东西”比“仅文件”
更多或者至少,如果目的是找到“/ var / log”目录下的所有“文件” 递归地,我希望得到这样的anwser:
/var/log/empty.txt
/var/log/setup.log
/var/log/setup.log.full
/var/log/tmp/fake.txt
那么有人可以解析输出的内容供以后使用。如此
$ perl -wnle 'print "$. :" , $_;' logfiles
1 :/var/log/empty.txt
2 :/var/log/setup.log
3 :/var/log/setup.log.full
4 :/var/log/tmp/fake.txt
这是我到目前为止所得到的:
$ ls -1R
.:
cal.sh
cokemachine.sh
dir
sort
test.sh
./dir:
afile.txt
file
subdir
./dir/subdir:
$ ls -R | sed s/^.*://g
cal.sh
cokemachine.sh
dir
sort
test.sh
afile.txt
file
subdir
但是这仍然留下所有目录/子目录名(dir和subdir),再加上几个空的换行符
如何在不使用Perl或awk的情况下获得正确的结果?最好只使用基本的bash命令(这只是因为Perl和awk超出了评估范围)
编辑:我专注于我自己的“$ HOME”文件夹,只是为了限制列出的文件。我家乡的内容很少
编辑第二:抱歉我的初始表格中的未经批准的问题。我修改了措辞,希望现在每个人都能看到问题。
答案 0 :(得分:4)
尝试 -
find / var / log> 〜/ lsout.txt
答案 1 :(得分:4)
如果您无法使用或不能使用哪些命令,ls -R /var/log >~/lsout.txt
或find /var/log -print >"$HOME/lsout.txt"
或任何类似的组合都可以正常使用。
但是,如果作业的目的是写一个100%sh
的实施,而不使用ls -R
,find
等,那么你应该按照以下方式制作一些东西:
#!/bin/sh
# Helper method which recursively lists the contents of a given directory
# Usage: recurse_ls target_directory
recurse_ls()
{
TARGET_DIR="$1"
# list contents of $TARGET_DIR
...
# - recursive call to list contents of sub-directories
recurse_ls ...
...
}
# MAIN
# Usage: script.sh target_directory
# - check that parameters to script.sh are correct
...
# - list the contents of target_dir and its subdirectories
recurse_ls "$1"
有用的链接:
答案 2 :(得分:1)
我猜他们想要的答案是:
ls -R /var/log/ > /home/bqiu/lsout.txt
即。你说的原始答案是错误的。
除了你可能想把它写成:
ls -R /var/log/ > ~/lsout.txt
。
这样它就会输出到登录的主目录,而不仅仅是用户“bqiu”。
当它说:Run a recursive listing of all the files
我ls
代表listing
,-R
选项代表recursive
。
所以对我来说,问题的措辞建议使用ls -R
来制作列表,
但这取决于他们希望列表的格式。