通过管道 ls 输出获取所有目录的路径

发布于 2024-12-09 06:19:08 字数 521 浏览 0 评论 0原文

我想列出当前目录中的所有目录 ls -d * 并列出它们的所有完整路径。我知道我需要将输出传输到某个东西,但只是不确定是什么。我不知道是否可以将输出通过管道传输到 pwd 或其他东西。

期望的结果如下。

$ cd /home/
$ ls -d *|<unknown>
/home/Directory 1
/home/Directory 2
/home/Directory 3

是需要通过管道传输到 pwd 或其他内容的部分。

我的总体目标是创建一个脚本,该脚本将允许我为提供给它的每个完整路径构造一个命令。我将输入 build,它会在内部为每个命令运行以下命令。

cd <full directory path>; JAVA_HOME=jdk/Contents/Home "/maven/bin/mvn" clean install

I want to list all directories ls -d * in the current directory and list out all their full paths. I know I need to pipe the output to something, but just not sure what. I don't know if I can pipe the output to a pwd or something.

The desired result would be the following.

$ cd /home/
$ ls -d *|<unknown>
/home/Directory 1
/home/Directory 2
/home/Directory 3

<unknown> being the part which needs to pipe to pwd or something.

My overall goal is to create a script which will allow to me construct a command for each full path supplied to it. I'll type build and internally it will run the following command for each.

cd <full directory path>; JAVA_HOME=jdk/Contents/Home "/maven/bin/mvn" clean install

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

这样的小城市 2024-12-16 06:19:08

简单地尝试一下:

$ ls -d $PWD/*/

或者

$ ls -d /your/path/*/

Try simply:

$ ls -d $PWD/*/

Or

$ ls -d /your/path/*/
寂寞美少年 2024-12-16 06:19:08
find `pwd` -type d -maxdepth 1 -name [^.]\*

注意:以上命令适用于 bash 或 sh,不适用于 csh。 (Bash 是 Linux 和 MacOSX 中的默认 shell。)

find `pwd` -type d -maxdepth 1 -name [^.]\*

Note: The above command works in bash or sh, not in csh. (Bash is the default shell in linux and MacOSX.)

简单爱 2024-12-16 06:19:08
ls -d $PWD/* | xargs -I{} echo 'cd {} JAVA_HOME=jdk/Contents/Home "/maven/bin/mvn" clean install' >> /foo/bar/buildscript.sh

将为你生成脚本。

ls -d $PWD/* | xargs -I{} echo 'cd {} JAVA_HOME=jdk/Contents/Home "/maven/bin/mvn" clean install' >> /foo/bar/buildscript.sh

will generate the script for u.

最冷一天 2024-12-16 06:19:08

我是否还建议在您的 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 时包含 -- )。

Might I also suggest using -- within your ls construct, so that ls -d $PWD/*/ becomes ls -d -- $PWD/*/ (with an extra -- inserted)? This will help with those instances where a directory or filename starts with the - character:

/home/-dir_with_leading_hyphen/
/home/normal_dir/

In this instance, ls -d */ results in:

ls: illegal option -- -
usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

However, ls -d -- */ will result in:

-dir_with_leading_hyphen/      normal_dir/

And then, of course, you can use the script indicated above (so long as you include the -- any time you call ls).

把回忆走一遍 2024-12-16 06:19:08

不需要管道:

find $(pwd) -maxdepth 1 -type d -printf "%H/%f\n"

令我惊讶的是,打印语句中的命令也有效:

find -maxdepth 1 -type d -printf "$(pwd)/%f\n"

No piping neccessary:

find $(pwd) -maxdepth 1 -type d -printf "%H/%f\n"

to my surprise, a command in the print statement works too:

find -maxdepth 1 -type d -printf "$(pwd)/%f\n"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文