Mac 上的批处理文件,对一堆文件进行了更改
Batch file on Mac that makes a change to a bunch of files
我是制作批处理文件的新手,感谢您对这个可能非常简单的问题的帮助
我在一堆目录中有一堆文件,像这样:
dir-1/index.html
dir-2/index.html
dir-3/index.html
...
dir-150/index.html
每个文件在 HTML 中包含文本 "Replace with second column" 和 "Replace with third column"
然后,我有一个包含三列信息的 tsv 文件,如下所示:
dir-1 dog cat
dir-2 mouse frog
dir-3 circus clown
...
dir-150 last one
我正在尝试批量编辑每个 index.html 文件,用第 2 列中的数据替换文本 "Replace with second column",用第 3 列中的数据替换 "Replace with third column",对于第 1 列中列出的特定目录。关于如何在 UNIX/Mac OSX?
中执行此操作的任何想法
假设 changes.tab 具有制表符分隔值,如您上面的示例(而不是您所说的逗号分隔),这应该让您开始:
#!/bin/sh
cat changes.tab | while read line; do
TARGETDIR="`echo "$line" | awk -F"\t" '{ print }'`"
COL2="`echo "$line" | awk -F"\t" '{ print }'`"
COL3="`echo "$line" | awk -F"\t" '{ print }'`"
if [ -d "$TARGETDIR" ]; then
cat "$TARGETDIR/index.html" |
sed "s/Replace with second column/$COL2/g" |
sed "s/Replace with third column/$COL3/g" > temp
mv temp "$TARGETDIR/index.html"
fi
done
根据您的特定需求进行测试和调整。另请注意,这会替换目标文件,因此请先制作一份安全副本。
我是制作批处理文件的新手,感谢您对这个可能非常简单的问题的帮助
我在一堆目录中有一堆文件,像这样:
dir-1/index.html
dir-2/index.html
dir-3/index.html
...
dir-150/index.html
每个文件在 HTML 中包含文本 "Replace with second column" 和 "Replace with third column"
然后,我有一个包含三列信息的 tsv 文件,如下所示:
dir-1 dog cat
dir-2 mouse frog
dir-3 circus clown
...
dir-150 last one
我正在尝试批量编辑每个 index.html 文件,用第 2 列中的数据替换文本 "Replace with second column",用第 3 列中的数据替换 "Replace with third column",对于第 1 列中列出的特定目录。关于如何在 UNIX/Mac OSX?
中执行此操作的任何想法假设 changes.tab 具有制表符分隔值,如您上面的示例(而不是您所说的逗号分隔),这应该让您开始:
#!/bin/sh
cat changes.tab | while read line; do
TARGETDIR="`echo "$line" | awk -F"\t" '{ print }'`"
COL2="`echo "$line" | awk -F"\t" '{ print }'`"
COL3="`echo "$line" | awk -F"\t" '{ print }'`"
if [ -d "$TARGETDIR" ]; then
cat "$TARGETDIR/index.html" |
sed "s/Replace with second column/$COL2/g" |
sed "s/Replace with third column/$COL3/g" > temp
mv temp "$TARGETDIR/index.html"
fi
done
根据您的特定需求进行测试和调整。另请注意,这会替换目标文件,因此请先制作一份安全副本。