尝试运行一个脚本,该脚本将提取所有目录以及包含这些目录的文件,并将数据记录到.CSV文件中。
因此,如果我要具有以下结构: mainDir.dir-> [sub1.dir-> file01.png,sub2.dir-> file02.png] ,我会得到
的CSV这是我目前拥有的脚本
setInterval
答案 0 :(得分:1)
find
对于递归处理许多文件很有用。
命令
find . -type f -execdir sh -c "pwd | tr -d '\n' >> ~/my_file.csv; echo -n ';' >> ~/my_file.csv; echo {} | sed -e 's/^\.\///' >> ~/my_file.csv" \;
注意:请确保您未提供输出CSV文件的相对路径。 execdir更改工作目录(这就是使pwd工作的原因)。
故障
find . -type f
从此处开始递归查找所有文件
-execdir sh -c "pwd | tr -d '\n' >> ~/my_file.csv; echo -n ';' >> ~/my_file.csv;
对于每个文件,在其目录pwd
中执行。删除换行符并添加目录名称以输出。还要添加一个分号,再次没有换行符。
echo {} | sed -e 's/^\.\///' >> ~/my_file.csv" \;
附加文件名以输出。这次,保留换行符,但是默认情况下,find
会将./
放在文件名前面。 sed
在这里将其删除。
答案 1 :(得分:0)
如果您不需要超过一个级别的深度,这似乎可行
for i in **/*; do echo $i | tr / \; ; done >> file.csv