制作文件列表并在目录下的同一文件上运行命令



我在一个扩展名为。ar的目录下有50个文件。

我有一个想法,用这些文件名制作一个列表,读取每个文件,回到目录并在每个文件上运行以下2个命令。$i是文件名。ar

paz -r -L -e clean $i
psrplot -pF -j CDTp  -j 'C max'  -N2,1 -D $i.ps/cps -c set=pub -c psd=0 $i $i.clean

使用*。Ar不起作用,因为它只是覆盖第一个文件,没有给出正确的输出。谁能帮我写一个bash脚本?

我使用的bash脚本没有创建列表,直接在目录中运行是

# !env bash

for i in $@
do
outfile=$(basename $i).txt
echo $i
paz -r -L -e clean $i
psrplot -pF -j CDTp  -j 'C max'  -N2,1 -D $i.ps/cps -c set=pub -c psd=0 $i $i.clean
done

请帮帮我,我已经试了一段时间了

您希望一次处理一个文件。最安全的方法是使用find ... -print0while read ...。这样的:

#!/bin/bash
#
ardir="/data"
# Basic validation
if [[ ! -d "$ardir" ]]
then
echo "ERROR: the directory ($ardir) does not exist."
exit 1
fi
# Process each file
find "$ardir" -type f -name "*.ar" -print0 | while IFS= read -r -d '' arfile
do
echo "DEBUG file=$arfile"
paz -r -L -e clean $arfile
psrplot -pF -j CDTp  -j 'C max'  -N2,1 -D $arfile.ps/cps -c set=pub -c psd=0 $arfile $arfile.clean
done

这个方法(以及更多!)在这里被记录:http://mywiki.wooledge.org/BashFAQ/001

相关内容

  • 没有找到相关文章

最新更新