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



我想创建一个别名,例如,如果我键入fullList,它将在完整路径中打印出一个具有特定扩展名的自定义文本,列出最后一次修改的最后一次类似

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

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

#!/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 &

注意,这是假设您只想查找文件,因为lsF标志会将"/"附加到目录中。

函数

使用function而不是alias。从今以后,你将能够通过论证

fullList() {
  customText="$1"
  for f in "$PWD"/* # list current dir files
  do 
      printf "%s: %sn" "$customText" "$PWD/$f"
  done
}

用法

然后运行

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

你知道吗

tree命令?可能有助于列出目录内容:

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

最新更新