Bash脚本。如果file.prt存在,则创建.info.file.prt。

Bash脚本。如果file.prt存在,则创建.info.file.prt。,bash,file,unix,Bash,File,Unix,我在一个名为/folder/files/$SET_DATE/的文件夹中有三个文件,但根据日期的不同,可能会有更多文件 Ben.prt .info.Ben.prt Jim.prt John.prt 我想为文件夹中的每个.prt文件创建一个.info.*.prt文件,但是如果已经存在一个,我不想创建两个 然后,所有的猪油将留给我以下内容 SET_DATE= cat /tmp/date.txt FILES="/folder/folder/folder/$DP_DATE/.info.*" FILES

我在一个名为/folder/files/$SET_DATE/的文件夹中有三个文件,但根据日期的不同,可能会有更多文件

Ben.prt
.info.Ben.prt
Jim.prt
John.prt
我想为文件夹中的每个.prt文件创建一个.info.*.prt文件,但是如果已经存在一个,我不想创建两个

然后,所有的猪油将留给我以下内容

SET_DATE= cat /tmp/date.txt

FILES="/folder/folder/folder/$DP_DATE/.info.*"
FILESF="/folder/folder/folder/$DP_DATE/"
FILESP="*.prt"

if [ ! -e $FILESF".info."$FILESP ]; then
echo 0 >> $FILESF.info.$FILESP
fi
服务员本10点30分

.info.*foles中的值将是.prt文件中的字符数

所以我有以下几点

SET_DATE= cat /tmp/date.txt

FILES="/folder/folder/folder/$DP_DATE/.info.*"
FILESF="/folder/folder/folder/$DP_DATE/"
FILESP="*.prt"

if [ ! -e $FILESF".info."$FILESP ]; then
echo 0 >> $FILESF.info.$FILESP
fi
但我现在很难理解这一点

任何朝着正确方向的踢腿都会让人大吃一惊

用于*.prt中的文件
for file in *.prt
do
    [ -f ".info.$file" ] || wc -c < "$file" > ".info.$file"
done
做 [-f”.info.$file“]| | wc-c<“$file”>”.info.$file“ 完成

对于每个
.prt
文件名不以
点开头,如果相应的
.info
文件不存在,请使用文件中找到的字符数创建它。

实际上,这在外部目录中不起作用,您知道如何从不同的文件夹运行此脚本以针对该文件夹中的文件运行吗?最简单的方法是将要在其中操作的目录名作为参数传递,并将脚本更改目录到该位置。第一行,就在
for
循环上方,可以是
cd${1:-“}| | exit 1
,这意味着更改到第一个参数指定的目录或当前目录。这样可以避免将文件名与路径名分开进行解析。另一种方法是将要检查的文件名作为命令行参数。不过,这样做需要将名称拆分为目录(路径)和文件名。可行,但更烦躁。