如何创建自定义别名以打印出包含自定义文本的完整路径?

时间:2013-12-10 06:23:09

标签: linux shell

我想创建一个别名,例如,如果我输入fullList,它将打印出一个自定义文本,在完整路径中列出了特定扩展名,最后修改了最后一个像

>fullList

file = /home/user/something/fileA.txt &
file = /home/user/something/fileB.txt &
file = /home/user/something/fileC.txt & <- the last modified.

2 个答案:

答案 0 :(得分:1)

如果你想要你的确切示例输出,你会想要做类似的事情。

#!/bin/bash
echo
for i in $(ls -trF *.txt); do 
  full_path="$(pwd $i)/$i"   
  echo "file = $full_path &"
done

如果你想做一个简单的一行别名,做下面的事情。

> alias fullList="echo; for i in \$(ls -trF *.txt); do full_path=\"\$(pwd \$i)/\$i\"; echo \"file = \$full_path &\"; done"
> fullList

file = /some/path/oldest.txt &
file = /some/path/newer.txt &
...
file = /some/path/newest.txt &

注意,假设您只想查找文件,因为 ls F 标志会将“/”附加到目录。

答案 1 :(得分:1)

功能

使用function代替alias。从此以后,您将能够传递参数

fullList() {
  customText="$1"

  for f in "$PWD"/* # list current dir files
  do 
      printf "%s: %s\n" "$customText" "$PWD/$f"
  done
}

用法

然后运行

$ fullList 'blabla'
blabla: /path/to/file1
blabla: /path/to/file2
blabla: /path/to/file2

你知道吗?

tree command?列出目录内容可能会有所帮助:

tree -f -L 1 $(pwd)/ 
/home
|-- /home/user1
`-- /home/user2