查找具有相同名称和postfix shell脚本的文件

时间:2011-04-28 10:30:08

标签: shell scripting find

我有这样的要求:

  • 查找是否存在两个不同日期戳的同名文件。 (例如:custompayment_24APR,custompayment_25APR)在给定目录中。我有像xxx_24Apr,xxx_25Apr... yyy_24Apr,yyy_25Apr这样的文件,其中xxx和yyy可以是任何东西......我怎么能这样做?
  • 将file1中的行追加到file2。 (_24Apr是文件1,_25Apr是第二个)
  • 获取以特定字符开头的行数(指定字符)。

有人可以帮忙提出一个shell脚本吗?如果你可以帮助找到文件部分会很棒,我将管理其余部分。

非常感谢!

2 个答案:

答案 0 :(得分:1)

查找和比较文件部分

$ file1=custompayment_24APR
$ file2=custompayment_25APR
$ echo ${file1%%_*}
custompayment
$echo ${file2%%_*}
custompayment
$ case "${file1%%_*}" in
> "${file2%%_*}" ) echo "same";;
> esac
same

在“_”

之后找到文件的最后一部分
$ echo "_${file1##*_}"
_24APR

计算以特殊字符开头的文件

shopt -s nullglob
echo "character*" | wc -l

或使用find

find . -type f -iname "character*" | wc -l

答案 1 :(得分:0)

safe find的另一个用途:

append_duplicates_to_newest()
{
    while IFS= read -r -d '' -u 9
    do
        prefix="${REPLY%_*}"
        if [ "$prefix" = "$old_prefix" ]
        then
            cat -- "$old_file" >> "$REPLY"
        fi
        old_file="$REPLY"
        old_prefix="$prefix"
    done 9< <( find "/path/to/files/" -type f -printf '%f\0' | sort -z)
}

对于上一期,假设该字符存储在$char

grep --count "^$char" -r /path/to/files/