将所有子目录中带有扩展名的所有文件打印到 CSV (BASH)

问题描述 投票:0回答:2

我正在编写一个处理备份日志的 bash 脚本。我有包含子文件夹的月份文件夹,在这些子文件夹中有多个扩展名为“.ptx”的文件。

我想抓取每个以 .ptx 结尾的文件并将其打印到 CSV 文件中。

我不确定如何解决这个问题,因为我的知识非常有限,但我认为我需要使用 find ,就像在这个例子中一样。

这是我二月份的位置:

if [ -d "/Volumes/NAS/01_PROJECTS/01_SHORTFORM/2024/02_FEB/" ]; then
  
cd /Volumes/NAS/01_PROJECTS/01_SHORTFORM/2024/02_FEB/

printf '%s\n' * > AUDIO_BACKUP_LOG_02_FEB.csv

mv AUDIO_BACKUP_LOG_02_FEB.csv /Volumes/NAS/04_ADMIN/06_BACKUP_LOGS/MONTHS/2024/

echo "Feb completed"

fi

我不太确定如何组合 printffind 并查看所有子目录。

bash
2个回答
1
投票

要仅获取文件名并删除目录路径,您可以尝试以下操作:

find . -type f -iname '*.ptx' -exec basename {} \; > AUDIO_BACKUP_LOG_01_JAN.csv

如果您想通过掩码排除某些文件,您可以尝试以下操作:

find . -type f -iname '*.ptx' -exec basename {} \; |grep -v '.bak.' > AUDIO_BACKUP_LOG_01_JAN.csv

0
投票

您可以使用

find
查找与您的扩展名(和其他条件)匹配的所有文件,然后使用
-print
选项输出文件名,您可以根据需要通过输出文件进行管道传输:

find . -type f -iname '*.csv' -print > /tmp/output.txt
© www.soinside.com 2019 - 2024. All rights reserved.