假设您在系统上工作,并且有人不小心删除了
ls
命令(/bin/ls
)。您如何获得当前目录中文件的列表?试试吧。
我尝试了许多方法,并且还在Internet上进行了搜索,但一无所获。我想问ls
一下命令旁边,我们可以使用什么命令列出所有文件。
假设您在系统上工作,并且有人不小心删除了
ls
命令(/bin/ls
)。您如何获得当前目录中文件的列表?试试吧。
我尝试了许多方法,并且还在Internet上进行了搜索,但一无所获。我想问ls
一下命令旁边,我们可以使用什么命令列出所有文件。
Answers:
echo *
...将通过Bourne兼容shell上的文件遍历显示当前文件夹中的文件。
这将所有文件向下列出一级:
echo */*
在Bash中,如果设置了globstar(设置为shopt -s globstar
,未设置为shopt -u globstar
),则将递归列出所有文件:
echo **
echo **/*
来递归地执行此操作。
find -maxdepth 1
find -maxdepth 1 -ls
减 TAB TAB
发现-ls开关独立于/ bin / ls并具有自己的格式,并显示详细信息:
127432 0 drwxr-xr-x 2 stefan stefan 48 Apr 8 22:51 ./temp/falsch/.hiddenfalsch
127447 0 lrwxrwxrwx 1 stefan stefan 9 Apr 8 22:51 ./temp/falsch/linkfalsch -> subfalsch
127427 0 drwxr-xr-x 2 stefan stefan 48 Apr 8 22:51 ./temp/.hiddenmusik
另一个显示可能性的细节是 stat
stat *
File: `halx0o'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 807h/2055d Inode: 102701 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ stefan) Gid: ( 1000/ stefan)
Access: 2011-04-08 22:38:18.000000000 +0200
Modify: 2009-07-23 03:16:15.000000000 +0200
Change: 2011-04-09 23:29:13.000000000 +0200
File: `ho ho ho'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 807h/2055d Inode: 115835 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ stefan) Gid: ( 1000/ stefan)
Access: 2011-04-08 22:38:18.000000000 +0200
Modify: 2010-07-24 14:12:48.000000000 +0200
Change: 2011-04-09 23:29:13.000000000 +0200
为了使它看起来像ls
,我将使用Bash的for
循环:
for i in *; do echo $i; done
如果那行不通,我会尝试使用Python ;)
:
python -c "import glob; print '\n'.join(glob.glob('/home/*'))"
import glob; print '\n'.join(glob.glob('/home/*'))
也会一样好。
lsattr ./*
getfacl ./*
也会显示权限
grep -l '.*' ./*
awk 'FNR==1 {print FILENAME}' ./*
与GNU awk一起使用
debugfs /dev/sdX
将sdX替换为要在其上执行ls的任何分区,然后可以在debugfs内部执行ls
debugfs: cd /
debugfs: ls -l
2 40755 (2) 0 0 4096 6-Apr-2011 01:01 .
2 40755 (2) 0 0 4096 6-Apr-2011 01:01 ..
11 40700 (2) 0 0 16384 5-Jul-2010 09:59 lost+found
2392065 40755 (2) 0 0 4096 5-Jul-2010 09:59 boot
2228225 40755 (2) 0 0 4096 5-Jul-2010 09:59 sys
1376257 40755 (2) 0 0 4096 5-Jul-2010 09:59 proc
4915201 40755 (2) 0 0 4096 5-Jul-2010 09:59 dev
3473409 40755 (2) 0 0 12288 10-Apr-2011 22:05 etc
98305 100644 (1) 0 0 0 6-Jul-2010 12:05 .autofsck
3342337 40755 (2) 0 0 4096 5-Apr-2011 15:05 var
3932161 41777 (2) 0 0 4096 10-Apr-2011 22:11 tmp
..........
debugfs:
lynx ./
mc
假设您已安装午夜指挥官
使用的另一种方式tree
,这里没有在任何地方提及,它是递归的,与find或ls不同,它没有任何错误(例如:Permission denied
,Not a directory
),如果要将文件提供给xargs
或其他命令,您也可以获得绝对路径
tree -fai /pathYouWantToList >listOfFiles.list
选项含义:
-a All files are printed. By default tree does not print hidden files (those beginning with a dot
`.'). In no event does tree print the file system constructs `.' (current directory) and `..'
(previous directory).
-i Makes tree not print the indentation lines, useful when used in conjunction with the -f option.
-f Prints the full path prefix for each file.
echo *
在实际操作中,如果您搞砸了系统,使您无法执行任何程序(例如,删除libc.so
或ld.so
),但仍具有运行中的shell ,则在实践中会很有用。