我正在编写一个处理备份日志的 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
我不太确定如何组合 printf 和 find 并查看所有子目录。
要仅获取文件名并删除目录路径,您可以尝试以下操作:
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
您可以使用
find
查找与您的扩展名(和其他条件)匹配的所有文件,然后使用 -print
选项输出文件名,您可以根据需要通过输出文件进行管道传输:
find . -type f -iname '*.csv' -print > /tmp/output.txt