如何通过以下脚本中当前目录中的给定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}'
基本上,我想将awk传递给某种类似的查找函数:| awk''|查找
如果有人提出更优雅的方式来完成任务,我真的很感激。
操作系统:SunOS 5.10 壳牌:KSH
答案 0 :(得分:3)
这样的东西?
$ find . -maxdepth 1 -inum 2883399
./.jshintrc
$
或:
$ echo 2883399 | xargs -IX find . -maxdepth 1 -inum X
./.jshintrc
$