微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

shell必须parsingls -Al输出并获取最后一个字段文件或目录名称任何解决scheme

我必须parsingls -Al output并获取文件或目录名称

ls -Al输出

drwxr-xr-x 12 s162103 studs 12 march 28 2012 personal domain drwxr-xr-x 2 s162103 studs 3 march 28 22:32 public_html drwxr-xr-x 7 s162103 studs 8 march 28 13:59 WebApplication1

我应该只使用ls -Al | <something> ls -Al | <something>

例如:

bash – 最后一个特定字符后的expression

为什么使用pipe道在PowerShell中不起作用?

在bash中使用了什么-ex选项? #!/ bin / bash -ex mean

将Word文档/ docx文件转换为PDF时,文件系统监视器停止工作

在Ubuntu上恢复挂起进程的最佳语言/方法

ls -Al | awk '{print $8}'

但是这不起作用,因为如果目录名称中有空格,则$8不是名称,而是名称的一部分。 也许有一些实用程序可以删除姓氏或删除任何东西? 我需要find任何解决scheme。 请帮忙!

编辑:我知道什么parsingls -Al是个坏主意,但我应该完全用上面的构造parsing它! 没有办法使用这样的事情

for f in *; do somecommand "$f" done

为什么这个逻辑不能按照预期过滤数据呢?

批循环错误 – 只复制1个文件

哪种脚本语言是最好的?

我可以在Eclipse运行configuration中运行脚本吗?

用户使用bash运行的进程数

这个ls -Al |awk '{$1=$2=$3=$4=$5=$6=$7=$8="";print $0}'我知道这是一个便宜的窍门,但是因为你不想使用其他的东西比我的 – 我不能想更好的事情…

不要解析ls -Al ,如果你需要的只是文件名。

你可以把所有的文件名放在一个数组中:

files=( * )

或者你可以直接迭代文件

for f in *; do echo "$f" done

如果您需要从ls中获得某些具体信息,请更新您的问题以指定您需要的信息。

基于@ squiguy请求评论,我发表我的评论作为答案:

那么这个呢?

ls -1A

而不是l (L,这个字母),一个1 (一个数字)。 它只会列出文件名称

还值得注意的是, find可以做你正在寻找的东西:

这个目录中的所有东西,相当于ls :

find . -maxdepth 1

递归地类似于ls -R :

find .

只有给定目录中的目录:

find /path/to/some/dir -maxdepth 1 -type d

md5sum每个常规文件

find . -type f -exec md5sum {} ;

希望awk适合你:

ls -Al | awk 'NR>1{for(i=9;i<NF;i++)printf $i" ";print $i}'

如果你对sed感兴趣,

ls -Al | sed '1d;s/^([^ ]* *){8}//'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐