symlinks.sh

来自「Shall高级编程」· Shell 代码 · 共 65 行

SH
65
字号
#!/bin/bash# symlinks.sh: Lists symbolic links in a directory.directory=${1-`pwd`}#  Defaults to current working directory,#+ if not otherwise specified.#  Equivalent to code block below.# ----------------------------------------------------------# ARGS=1                 # Expect one command-line argument.## if [ $# -ne "$ARGS" ]  # If not 1 arg...# then#   directory=`pwd`      # current working directory# else#   directory=$1# fi# ----------------------------------------------------------echo "symbolic links in directory \"$directory\""for file in "$( find $directory -type l )"   # -type l = symbolic linksdo  echo "$file"done | sort                                  # Otherwise file list is unsorted.#  Strictly speaking, a loop isn't really necessary here,#+ since the output of the "find" command is expanded into a single word.#  However, it's easy to understand and illustrative this way.#  As Dominik 'Aeneas' Schnitzer points out,#+ failing to quote  $( find $directory -type l )#+ will choke on filenames with embedded whitespace.#  Even this will only pick up the first field of each argument.exit 0# --------------------------------------------------------# Jean Helou proposes the following alternative:echo "symbolic links in directory \"$directory\""# Backup of the current IFS. One can never be too cautious.OLDIFS=$IFSIFS=:for file in $(find $directory -type l -printf "%p$IFS")do     #                              ^^^^^^^^^^^^^^^^       echo "$file"       done|sort# And, James "Mike" Conley suggests modifying Helou's code thusly:OLDIFS=$IFSIFS='' # Null IFS means no word breaksfor file in $( find $directory -type l )do  echo $file  done | sort#  This works in the "pathological" case of a directory name having#+ an embedded colon.#  "This also fixes the pathological case of the directory name having#+  a colon (or space in earlier example) as well."

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?