首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找返回basename和size的文件

查找返回basename和size的文件
EN

Stack Overflow用户
提问于 2016-08-03 22:49:25
回答 1查看 1.1K关注 0票数 2

在bash中,我可以获得找到的文件的basename (名称没有路径),如下所示:

代码语言:javascript
复制
find . -exec basename {} \;

我可以得到这样的文件大小:

代码语言:javascript
复制
find . -exec ls -l {} \; | awk '{print $5}'

但是我需要把基本名和文件大小用空格隔开。

如何使用一个查找操作正确组合这两个命令?此代码不起作用:

代码语言:javascript
复制
find . -exec basename {} \; -exec ls -l {} | awk '{print $5}' \;

awk: can't open file ;find: 
 source line number 1
-exec: no terminating ";" or "+"

我正在尝试创建一个快速复制文件查找器。使用此列表,我将进行排序,然后使用uniq查找所有重复的文件,使用条件:复制=相同的"basename“&相同的”大小“(没有md5检查)。

到目前为止,仅仅列出这个初始列表,我就会在语法上被挂起(也许是以编程的方式)。如果你有更好的方法,请告诉我。它试图使用最基本的bash命令使其工作,因此它可以同时在linux和mac上工作,而不需要安装任何东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-03 23:00:17

GNU系统

对于GNU系统,请使用以下命令

代码语言:javascript
复制
find . -printf '%k\t%f\n'

获取每个文件和basename大小的输出。

  • %k打印的文件大小( kb )
  • \t文字制表符
  • %f打印文件名并删除前面的目录路径
  • \n文字换行符

OSX

对于OSX,使用此命令,因为它本机不直接支持-printf参数。

代码语言:javascript
复制
find . -exec bash -c 'printf "%s\t%s\n" $(stat -f " %z" "$1") "$(basename "$1")"' - {} \;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38754880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档