获得文件夹 PATH 列表的途径(命令)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获得文件夹 PATH 列表的途径(命令)?相关的知识,希望对你有一定的参考价值。

dir c: /s >> d:\dir.txt

这样的话,你c盘的所有文件夹与文件,都会纪录在d盘下的dir.txt里面了

请参考追问

怎么去操做实现,用能让小学生明白的语言讲一下拜托

追答

把c:的地方,改成你想取得文件列表的
d:改成你想保存的路径
dir.txt是想用来保存文件列表的文件名,可以改成喜欢的名字

参考技术A 有点没明白。
如果是批处理所在文件夹路径
echo %~dp0
如果显示环境变量path列表
echo %path%
如果是批处理所在文件夹下所有文件、文件夹名
dir/b追问

请说明白点,具体怎么操作,能把电脑里所有文件以树形目录全部显示出来

如何使用 find 命令从列表中查找所有带有扩展名的文件?

【中文标题】如何使用 find 命令从列表中查找所有带有扩展名的文件?【英文标题】:How to use find command to find all files with extensions from list? 【发布时间】:2011-02-06 23:15:24 【问题描述】:

我需要从目录中找到所有图像文件(gif、png、jpg、jpeg)。

find /path/to/ -name "*.jpg" > log

如何修改此字符串以不仅查找 .jpg 文件?

【问题讨论】:

【参考方案1】:
find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log

【讨论】:

在 mac 上不适用于我,但可以使用 -E(扩展)选项(也许管道是扩展功能?):find -E /path/to -iregex ".*\ .(jpg|gif|png|jpeg)" > 日志【参考方案2】:
find /path/to/  \( -iname '*.gif' -o -iname '*.jpg' \) -print0

会起作用。可能有更优雅的方式。

【讨论】:

-iname 不区分大小写 @Gerald:您可能需要将 OR 表达式分组到转义括号中:find /path/to/ \( -iname '*.gif' -o -iname '*.jpg' \) -exec ls -l \; 否则 exec 仅适用于最后一部分(在这种情况下为 -iname '*.jpg' )。 这是一个重要的评论。 find /path/to/ -iname '*.gif' -o -iname '*.jpg' -print0 只会打印 jpg 文件!这里需要括号:find /path/to/ \( -iname '*.gif' -o -iname '*.jpg' \) -print0【参考方案3】:

find -E /path/to -regex ".*\.(jpg|gif|png|jpeg)" > log

-E 使您不必逃避正则表达式中的括号和管道。

【讨论】:

我的发现没有这个-E 嗯,-E 选项告诉find 使用“扩展正则表达式”。其他几个工具也有类似的选项,但我不确定这个选项是否适用于所有 UNIX 发行版。 也适用于 Mac OS。 @tboyce12 在 ubuntu 上工作,我可以指定 -regextype 来简化正则表达式:find . -regextype posix-extended -regex ".*\.(jpg|gif|png|jpeg)" @cjm 也许find -E /path/to -iregex ".*\.(jpg|gif|png|jpeg)" > log。使用-iregex 标志告诉find 不区分大小写。【参考方案4】:
find /path/to/ -type f -print0 | xargs -0 file | grep -i image

这使用file 命令来尝试识别文件的类型,而不考虑文件名(或扩展名)。

如果/path/to 或文件名包含字符串image,则上述内容可能会返回虚假命中。在这种情况下,我建议

cd /path/to
find . -type f -print0 | xargs -0 file --mime-type | grep -i image/

【讨论】:

抱歉,点击错误,我显然无法撤消反对票... :(【参考方案5】:
find /path -type f \( -iname "*.jpg" -o -name "*.jpeg" -o -iname "*gif" \)

【讨论】:

您能解释一下为什么在 name/iname 参数周围添加(转义)括号吗? 不一致有什么原因吗? -iname *.jpg-o -name *.jpeg-o -iname *gif 的格式都略有不同。 如果您至少可以解释与其他答案的不同之处。【参考方案6】:

在 Mac OS 上使用

find -E packages  -regex ".*\.(jpg|gif|png|jpeg)"

【讨论】:

【参考方案7】:

作为对@Dennis Williamson 上述回复的补充,如果您希望相同的正则表达式对文件扩展名不区分大小写,请使用 -iregex :

find /path/to -iregex ".*\.\(jpg\|gif\|png\|jpeg\)" > log

【讨论】:

【参考方案8】:
find -regex ".*\.\(jpg\|gif\|png\|jpeg\)"

【讨论】:

【参考方案9】:

如果文件没有扩展名,我们可以查找文件 mime 类型

find . -type f -exec file -i  + | awk -F': +' ' if ($2 ~ /audio|video|matroska|mpeg/) print $1 '

其中 (audio|video|matroska|mpeg) 是 mime 类型的正则表达式

&如果你想删除它们:

find . -type f -exec file -i  + | awk -F': +' ' if ($2 ~ /audio|video|matroska|mpeg/) print $1 ' | while read f ; do
  rm "$f"
done

或删除除这些扩展之外的所有其他内容:

find . -type f -exec file -i  + | awk -F': +' ' if ($2 !~ /audio|video|matroska|mpeg/) print $1 ' | while read f ; do
  rm "$f"
done

注意 !~ 而不是 ~

【讨论】:

【参考方案10】:

添加-regextype posix-extended 选项在我的情况下有效:

sudo find . -regextype posix-extended -regex ".*\.(css|js|jpg|jpeg|png|ico|ttf|woff|svg)" -exec chmod 0640  \;

【讨论】:

以上是关于获得文件夹 PATH 列表的途径(命令)?的主要内容,如果未能解决你的问题,请参考以下文章

用python使文件名按照一定规则批量重命名

如何获得使用Dir.glob只有文件的列表?

append命令有啥用?

Linux下文件传输

subprocess模块Popen调用命令的使用

深入理解Java中配置环境变量