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

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

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

例如:

  • 我有一个名为 sample 的文件夹,其中包含 sample1 和 sample2 子目录
  • 我在样本 1 中有 ex1.csv、ex2.csv,在样本 2 目录中有 ex3.csv、ex4.csv

我需要创建一个文本文件(或)csv 文件,以以下方式提供信息

ex1.csv,样本/样本1

ex2.csv,样本/样本1

ex3.csv,样本/样本2

如果有人能帮助我在 unix 中创建脚本文件就太好了

提前致谢

答案1

给定如下结构

$ tree sample
sample
├── sample1
│   ├── ex1.csv
│   └── ex2.csv
└── sample2
    ├── ex3.csv
    └── ex4.csv

2 directories, 4 files

您可以使用

$ find sample -type f -printf '%f,%h\n'
ex2.csv,sample/sample1
ex1.csv,sample/sample1
ex3.csv,sample/sample2
ex4.csv,sample/sample2

从 开始man find,相关的-printf格式说明符是

       %f     File's  name  with  any leading directories removed (only
              the last element).

       %h     Leading directories of file's name (all but the last ele‐
              ment).  If the file name contains no slashes (since it is
              in the current directory) the  %h  specifier  expands  to
              ".".

如果希望将结果保存在文件中,只需使用运算符重定向命令输出即可>。例如

find sample -type f -printf '%f,%h\n' > filelist

相关内容