我有这个脚本来删除文件夹中每个文件的前 4 行(如果它们的扩展名是).txt
。
我希望能够将包含该脚本的 file.command 放在同一个文件夹中,这样我只需双击它并执行它即可。
因此我创建了一个文件,内容如下:
#!/bin/bash
find . -type f -name "*.txt" -exec sed -i.bak '1,4d' {} \;
如果我运行该文件,我的所有 Mac txt 文件中的 4 行都会被删除 :(
我以为它find .
应该留在同一个文件夹中......
我该如何修复它以便使命令仅在 file.command 所在的文件夹中运行?
答案1
此代码:
find . -maxdepth 1 -type f -name "*.txt" -exec sed -i.bak '1,4d' {} \;
确实有效,问题是:
使用该命令创建的文件不是
executable
为了执行该操作而创建的:chmod +x file.command
然后从终端运行命令:
./file.command
答案2
正如已经评论过的,find
默认情况下进入子目录。
这样做:
#!/bin/bash
cd "$(dirname "$0")" # change directory to the location of the script
for file in *.txt; do # and iterate over the .txt files
sed -i.bak '1,4d' "$file"
done