How to get the list of files in a directory in a shell script?
我正在尝试使用shell脚本获取目录的内容。
我的脚本是:
1 2 3 | for entry in `ls $search_dir`; do echo $entry done |
其中
我知道我可以使用
我知道我可以改到那个目录,使用
我有两个相对路径:
那我现在该怎么办?
我用BASH。
1 2 3 4 | for entry in"$search_dir"/* do echo"$entry" done |
其他回答:你在这里是伟大的和在线的问题的答案,但这是顶部的谷歌的结果是"获取目录中的文件列表的狂欢"(这是寻找到一个列表文件保存),所以我想我会到这一问题的答案的帖子:
1 | ls $search_path > filename.txt |
如果你想只按一定的比例(如任何类型:txt文件)
1 | ls $search_path | grep *.txt > filename.txt |
请注意,路径搜索_美元是可选的;filename.txt LS >将当前目录。
1 2 3 4 5 6 | for entry in"$search_dir"/*"$work_dir"/* do if [ -f"$entry" ];then echo"$entry" fi done |
这是一个办法,它的语法是在我了解到:simpler
1 2 3 4 5 | yourfilenames=`ls ./*.txt` for eachfile in $yourfilenames do echo $eachfile done |
当前的工作目录是
基本上,你创建一个变量
1 | find"${search_dir}""${work_dir}" -mindepth 1 -maxdepth 1 -type f -print0 | xargs -0 -I {} echo"{}" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | $ pwd; ls -l /home/victoria/test total 12 -rw-r--r-- 1 victoria victoria 0 Apr 23 11:31 a -rw-r--r-- 1 victoria victoria 0 Apr 23 11:31 b -rw-r--r-- 1 victoria victoria 0 Apr 23 11:31 c -rw-r--r-- 1 victoria victoria 0 Apr 23 11:32 'c d' -rw-r--r-- 1 victoria victoria 0 Apr 23 11:31 d drwxr-xr-x 2 victoria victoria 4096 Apr 23 11:32 dir_a drwxr-xr-x 2 victoria victoria 4096 Apr 23 11:32 dir_b -rw-r--r-- 1 victoria victoria 0 Apr 23 11:32 'e; f' $ find . -type f ./c ./b ./a ./d ./c d ./e; f $ find . -type f | sed 's/^\.\///g' | sort a b c c d d e; f $ find . -type f | sed 's/^\.\///g' | sort > tmp $ cat tmp a b c c d d e; f |
变奏曲
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $ pwd /home/victoria $ find $(pwd) -maxdepth 1 -type f -not -path '*/\.*' | sort /home/victoria/new /home/victoria/new1 /home/victoria/new2 /home/victoria/new3 /home/victoria/new3.md /home/victoria/new.md /home/victoria/package.json /home/victoria/Untitled Document 1 /home/victoria/Untitled Document 2 $ find . -maxdepth 1 -type f -not -path '*/\.*' | sed 's/^\.\///g' | sort new new1 new2 new3 new3.md new.md package.json Untitled Document 1 Untitled Document 2 |
注释:
. :当前文件夹- 删除
-maxdepth 1 recursively搜寻 -type f :查找文件,不是目录(d )-not -path '*/\.*' :.hidden_files 不返回- 在prepended
./ sed 's/^\.\///g' :删除从列表
返回的答案将不接受与文件的前缀。这是使用的
1 2 3 4 | for entry in"$search_dir"/*"$search_dir"/.[!.]*"$search_dir"/..?* do echo"$entry" done |
这是另一种方式上市文件的目录(在不使用工具的不同,其他一些有效的答案)。
1 2 3 4 | cd"search_dir" for [ z in `echo *` ]; do echo"$z" done |
如果找的,以及如何在这个目录,然后目录
1 2 3 | if [ test -d $z ]; then echo"$z is a directory" fi |
我的工作与在Linux版(x86 64 _以下作品:GNU / Linux的)
1 2 3 4 | for entry in"$search_dir"/* do echo"$entry" done |