创建包含文件完整路径和一些附加文本的 txt 文件

创建包含文件完整路径和一些附加文本的 txt 文件

我有许多文件,放在许多文件夹中,我想创建一个 txt 文件,其中包含这些文件的完整路径以及它们所在目录的空格和名称。类似于:

halva/foo/bar/1/something.jpg 1
halva/foo/bar/2/another.jpg 2
halva/foo/bar/2/anotheranother.jpg 2

创建路径列表就像

find `pwd` -name *.jpg

但我不知道如何在路径后添加空格和目录名。我正在尝试对学校项目的内容进行分类。

答案1

$ find .  -name *.jpg -exec bash -c 'd=${1%/*}; d=${d##*/}; printf "%s %s\n" "$1" "$d"' Out {} \;
./halva/foo/bar/1/something.jpg 1
./halva/foo/bar/2/another.jpg 2
./halva/foo/bar/2/anotheranother.jpg 2

对于 找到的每个文件find,我们运行 bash 脚本d=${1%/*}; d=${d##*/}; printf "%s %s\n" "$1" "$d",其中第一个参数$1是文件名。

我们用删除后缀,,d=${1%/*}从完整文件名中获取目录名。然后我们使用前缀删除,,d=${d##*/}从中删除除最后一个目录名称之外的所有内容d。最后,printf用于打印输出。

Out除非 bash 命令出现错误,否则不会使用上述命令中的字符串,在这种情况下它充当有效的命令名称$0

将输出保存到文件

要将输出保存到文件,我们使用重定向

find .  -name *.jpg -exec bash -c 'd=${1%/*}; d=${d##*/}; printf "%s %s\n" "$1" "$d"' Out {} \; >SchoolProject.txt

>符号将标准输出重定向到其后面的文件名。

相关内容