我有以下目录结构:
~/mydir/dir1/f1.jpg
~/mydir/dir1/f2.jpg
~/mydir/dir2/f3.jpg
~/mydir/dir2/f4.jpg
~/mydir/dir2/f5.jpg
~/mydir/dir2/f6.jpg
~/mydir/dir3/f7.jpg
即。目录(mydir
)有许多子目录,而这些子目录中又包含许多图像。 dir1
,dir2
等没有更多子目录。
我正在寻找一个可以产生输出的脚本(任何语言,shell,python等):
<absolute path of f1.jpg> dir1
<absolute path of f2.jpg> dir1
<absolute path of f3.jpg> dir2
.
.
<absolute path of f6.jpg> dir2
<absolute path of f7.jpg> dir3
即。 mydir中所有目录中所有文件的完整绝对路径,后跟一个空格,然后是该文件的目录(即该文件所在的最后一个目录)。
我正在使用find . -name \* -print
来获取递归文件列表,但我不确定如何获得所需的确切输出。
答案 0 :(得分:1)
的Python
latin1
答案 1 :(得分:0)
如果找到了
find . -type f -printf "%f %h\n"
带有装饰
find . -type f -printf "<absolute path of %f> %h\n"
答案 2 :(得分:0)
$ cd ~
$ find mydir -type f | perl -p -e 's|(.*)/([^/]+)\n$|\1/\2 \1\n|g'
mydir/dir1/f1.jpg mydir/dir1
mydir/dir1/f2.jpg mydir/dir1
mydir/dir2/f3.jpg mydir/dir2
mydir/dir2/f4.jpg mydir/dir2
mydir/dir2/f5.jpg mydir/dir2
mydir/dir2/f6.jpg mydir/dir2
mydir/dir3/f7.jpg mydir/dir3
答案 3 :(得分:0)
您可以使用查找`pwd` 而不是查找。或查找relatif_dir 来获取绝对路径:
cd ~/mydir ; find `pwd` -type f -name "*.jpg" -exec sh -c 'echo "<absolute path of "`basename {}`">" `dirname {}`' \;
或
cd ~/mydir ; find `pwd` -type f -name "*.jpg" | sed -e "s/\(.*\)\/\([^\/]*\)/<absolute path of \2> \1/g"
答案 4 :(得分:0)
使用ls -d1 path/*/*
作为绝对路径,然后将其传输到Perl进行打印
ls -d1 ~/mydir/*/* | perl -lne 'print "<$_> ", m|.*/(.*)/[^/]*|'
~/
确实扩展到绝对路径。 完全按照要求输出
</path_mydir/last_dir/filename> last_dir
...
如果需要递归列表,请使用支持它的path/**
(大多数)。