我想列出当前目录中的所有目录ls -d *
并列出其所有完整路径。我知道我需要将输出管道输出,但不知道是什么。我不知道是否可以将输出传输到pwd
或其他东西。
期望的结果如下。
$ cd /home/
$ ls -d *|<unknown>
/home/Directory 1
/home/Directory 2
/home/Directory 3
<unknown>
是需要传递给pwd
或其他东西的部分。
我的总体目标是创建一个脚本,允许我为每个提供给它的完整路径构造一个命令。我将键入build
,并在内部为每个命令运行以下命令。
cd <full directory path>; JAVA_HOME=jdk/Contents/Home "/maven/bin/mvn" clean install
答案 0 :(得分:3)
尝试简单:
$ ls -d $PWD/*/
或者
$ ls -d /your/path/*/
答案 1 :(得分:1)
find `pwd` -type d -maxdepth 1 -name [^.]\*
注意:上面的命令适用于bash或sh,而不适用于csh。 (Bash是linux和MacOSX中的默认shell。)
答案 2 :(得分:0)
ls -d $PWD/* | xargs -I{} echo 'cd {} JAVA_HOME=jdk/Contents/Home "/maven/bin/mvn" clean install' >> /foo/bar/buildscript.sh
将为你生成脚本。
答案 3 :(得分:0)
我可能还建议您在--
构造中使用ls
,以便ls -d $PWD/*/
变为ls -d -- $PWD/*/
(插入额外的--
)?这将有助于那些目录或文件名以-
字符开头的实例:
/home/-dir_with_leading_hyphen/
/home/normal_dir/
在这种情况下,ls -d */
会导致:
ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]
但是,ls -d -- */
会导致:
-dir_with_leading_hyphen/ normal_dir/
然后,当然,您可以使用上面指出的脚本(只要您在调用--
时随时添加ls
)。
答案 4 :(得分:0)
没有必要的管道:
find $(pwd) -maxdepth 1 -type d -printf "%H/%f\n"
令我惊讶的是,print语句中的命令也有效:
find -maxdepth 1 -type d -printf "$(pwd)/%f\n"