如何创建一个提供文件名及其源目录信息的新文件

如何创建一个提供文件名及其源目录信息的新文件

我有一个目录,其中包含很多子目录和文件。我想创建一个提供每个文件名及其源目录路径信息的文件

例如:

我有一个名为 Sample 的文件夹,其中包含 Sample1 和 Sample2 子目录。

我在示例 1 目录中有ex1.csv, ,在示例 2 目录中有 , 。ex2.csvex3.csvex4.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

这只是使用basenamedirname来分割文件名。

$ 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

相关内容