![如何创建一个提供文件名及其源目录信息的新文件](https://linux22.com/image/93469/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E6%8F%90%E4%BE%9B%E6%96%87%E4%BB%B6%E5%90%8D%E5%8F%8A%E5%85%B6%E6%BA%90%E7%9B%AE%E5%BD%95%E4%BF%A1%E6%81%AF%E7%9A%84%E6%96%B0%E6%96%87%E4%BB%B6.png)
我有一个目录,其中包含很多子目录和文件。我想创建一个提供每个文件名及其源目录路径信息的文件
例如:
我有一个名为 Sample 的文件夹,其中包含 Sample1 和 Sample2 子目录。
我在示例 1 目录中有ex1.csv
, ,在示例 2 目录中有 , 。ex2.csv
ex3.csv
ex4.csv
我需要创建一个文本文件(或)CSV 文件,它以以下方式提供信息。
ex1.csv,sample/sample1
ex2.csv,sample/sample1
ex3.csv,sample/sample2
如果有人帮助我在 UNIX 中创建脚本文件,那就太好了。
我试过:$ find sample -type f -printf '%f,%h\n'
由于我使用的是 Solaris,它不允许我使用printf
,并且我无权安装其他实用程序。
答案1
我希望这与您的 Solaris 兼容 - 我在 SunOS 5.10 和 bash 4.3.26 下测试了它:
find . | while read f; do
if [ ! -d "$f" ]; then
echo $(basename "$f"),$(dirname "$f")
fi
done
这只是使用basename
和dirname
来分割文件名。
$ find test | while read f; do if [ ! -d "$f" ]; then echo $(basename "$f"),$(dirname "$f"); fi; done
ex4,test/sample2
ex3,test/sample2
ex2,test/sample1
ex1,test/sample1