我有一个目录,其中包含很多子目录和文件。我想创建一个提供每个文件名及其源目录路径信息的文件
例如:
我有一个名为 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