Perl 按当前目录中的索引节点解析名称

Perl 按当前目录中的索引节点解析名称,perl,awk,solaris,ksh,Perl,Awk,Solaris,Ksh,在以下脚本中,如何通过当前目录中的给定inode解析名称,该脚本打印指向作为参数传递给脚本的指定文件的符号链接的所有文件名。列表应按ctime排序 #!/usr/bin/ksh IFS="`printf '\n\t'`" USAGE="usage: symlink.sh <file>" get_ctime() { perl -se 'use File::stat; $file=lstat($filename); print $file->ctime' -- -fi

在以下脚本中,如何通过当前目录中的给定inode解析名称,该脚本打印指向作为参数传递给脚本的指定文件的符号链接的所有文件名。列表应按ctime排序

#!/usr/bin/ksh

IFS="`printf '\n\t'`"

USAGE="usage: symlink.sh <file>"

get_ctime() {
    perl -se 'use File::stat; $file=lstat($filename); print $file->ctime' -- -filename="$1"
}

stat_inode() {
    perl -se 'use File::stat; $file=stat($filename); if (defined $file) { print $file->ino; }' -- -filename="$1"
}

lstat_inode() {
    perl -se 'use File::stat; $file=lstat($filename); if (defined $file) { print $file->ino; }' -- -filename="$1"
}


if [ $# -eq 0 ]; then 
    echo "$USAGE"
    exit 1
fi

FILE_NAME="$1"
FILE_INODE=$(stat_inode "$FILE_NAME")

if [ ! -e "$FILE_NAME" ]; then
    echo "no such file \"$FILE_NAME\""
    exit 1
fi


for LINK in ./* ./.[!.]*  ;do
    if [ -L "$LINK" ]; then
    TARGET_INODE=$(stat_inode "$LINK")
    if [ ! -z "$TARGET_INODE" ]; then
        if [ "$FILE_INODE" -eq "$TARGET_INODE" ]; then
        echo $(get_ctime "$LINK") $(lstat_inode "$LINK");
        fi
    fi
    fi
done | sort -nk1 | awk '{print $2}'
#/usr/bin/ksh
IFS=“`printf'\n\t'`”
用法=“用法:symlink.sh”
获取时间(){
perl-se'use File::stat;$File=lstat($filename);print$File->ctime'--filename=“$1”
}
stat_inode(){
perl-se'use File::stat;$File=stat($filename);if(已定义的$File){print$File->ino;}'--filename=“$1”
}
lstat_inode(){
perl-se'use File::stat;$File=lstat($filename);if(已定义的$File){print$File->ino;}'--filename=“$1”
}
如果[$#-eq 0];然后
回显“$USAGE”
出口1
fi
FILE_NAME=“$1”
FILE\u INODE=$(stat\u INODE“$FILE\u NAME”)
如果[!-e“$FILE_NAME”];然后
echo“无此类文件”$file\u NAME“
出口1
fi
用于链接到。/*./.!]*;做
如果[-L“$LINK”];然后
TARGET_INODE=$(stat_INODE“$LINK”)
如果[!-z“$TARGET_INODE”];然后
如果[“$FILE\u INODE”-eq“$TARGET\u INODE”];然后
echo$(get_-ctime“$LINK”)$(lstat_-inode“$LINK”);
fi
fi
fi
完成|排序-nk1 | awk'{print$2}'
基本上,我希望通过管道将awk传输到某种查找函数,如:| awk'| lookup

如果有人提出一种更优雅的方式来完成这项任务,我将不胜感激

操作系统:sunos5.10 Shell:KSH

像这样的东西

$ find . -maxdepth 1 -inum 2883399 
./.jshintrc
$
或:

像这样的

$ find . -maxdepth 1 -inum 2883399 
./.jshintrc
$
或:

像这样的

$ find . -maxdepth 1 -inum 2883399 
./.jshintrc
$
或:

像这样的

$ find . -maxdepth 1 -inum 2883399 
./.jshintrc
$
或:


非常感谢。这正是我想要的。(但是-maxpath没有在我使用的find中实现。你用这个-maxdepth 1试图实现什么?)-maxdepth限制了find的搜索,并将使其更快。在你中间,有一个inode在手,它不需要做太多的搜索,所以加速可能是不存在的。如果在没有它的情况下也能正常工作,请在以下时间参加聚会::-)非常感谢。这正是我想要的。(但是-maxpath没有在我使用的find中实现。你用这个-maxdepth 1试图实现什么?)-maxdepth限制了find的搜索,并将使其更快。在你中间,有一个inode在手,它不需要做太多的搜索,所以加速可能是不存在的。如果在没有它的情况下也能正常工作,请在以下时间参加聚会::-)非常感谢。这正是我想要的。(但是-maxpath没有在我使用的find中实现。你用这个-maxdepth 1试图实现什么?)-maxdepth限制了find的搜索,并将使其更快。在你中间,有一个inode在手,它不需要做太多的搜索,所以加速可能是不存在的。如果在没有它的情况下也能正常工作,请在以下时间参加聚会::-)非常感谢。这正是我想要的。(但是-maxpath没有在我使用的find中实现。你用这个-maxdepth 1试图实现什么?)-maxdepth限制了find的搜索,并将使其更快。在你中间,有一个inode在手,它不需要做太多的搜索,所以加速可能是不存在的。如果在没有它的情况下也能正常工作,请在以下时间参加聚会::-)