查找文件夹下(.BMP)文件的完整路径名,追加到文件
我有11 .bmp图像在一个文件夹中。我想创建一个文本文件,其中每行是图像名称的完整路径。 我用下面的代码:查找文件夹下(.BMP)文件的完整路径名,追加到文件
#!/bin/bash
i=0
find -type f -iname "*.bmp" | while read x; do
echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1") >>test2.txt
app=$(printf "%05d" ${i}).bmp
#echo $app
echo $(sed '${s/$/'"${app}"'/;}' test2.txt)
i=$((i+1))
done
...但它不起作用。 所有图像都在这条路径:/家庭/ behzad /桌面/测试/ 我想一个文本文件,每一行是这样的:/home/behzad/Desktop/test/00000.bmp /家庭/ behzad /台式机/测试/ 00001.bmp ... /home/behzad/Desktop/test/00011.bmp
打印完整路径的所有.bmp
文件的~/foo/bar
及子目录的名称,以新的输出文件test2.txt
:
s=~/foo/bar # full path of dir to be searched.
find "$s" -iname "*.bmp" -type f -fprint test2.txt
向不同目录的test2.txt
追加更多名称:
s=~/oof/rab # full path of dir to be searched.
find "$s" -iname "*.bmp" -type f >> test2.txt
但我不认为这实际上是OP所要做的。请注意他们如何创建计数器并使用它来格式化新名称。 –
@CharlesDuffy,这很可能是真的。鉴于OP代码的质量,我的推论是OP可能有些困惑。 – agc
毫无疑问,他们感到困惑,但'printf'%05d''不是从哪里来的,也不是'$ i'中存储的计数器 - 在他们的唯一评论中也可以看到5位数字提供任何洞察力的理想输出。 –
我用下面的代码,它完成:)
#!/bin/bash
i=0
find -type f -iname "*.bmp" | while read x; do
echo $(cd $(dirname "$1") && pwd -P)/$(basename "$1") >>test1.txt
app=$(printf "%05d" ${i}).bmp
echo $app >>test2.txt
i=$((i+1))
done
paste -d "" test1.txt test2.txt > path.txt
循环设置_ $ x_与文件名,但_ $ x_永远不会被使用。 _test1.txt_是重复_ $ 1_的完整路径的列表; _test2.txt_是{00001.bmp,... n.bmp)的列表。然后将_test1.txt_和_test2.txt_粘贴在一起,创建_path。txt_ - 这些文件名可能不存在(或可能),但是当前目录下有'.bmp'文件。这让我感觉自己就像一部60年代的情景喜剧的驾驶教练。 – agc
我想是这样的:/home/behzad/Desktop/test/00000.bmp – rahim
哪个实现find'的'你有?如果你有GNU'find',你可以告诉它使用你想要的任何格式字符串。 –
顺便说一句,考虑通过http://shellcheck.net/运行您的代码并修复它在发现问题之前找到的所有内容。此外,描述什么“工作”意味着**在问题**中会有所帮助 - 我们知道您的代码在阅读时会做些什么,但您希望它做什么*只有您可以这么说。 –