Bash 壳体中的管道分叉
首先,我尝试在Google和Stackoverflow中搜索类似的主题,但没有找到任何类似的内容 问题: 有没有办法处理shell中的管道分叉 示例: 我有以下目录树:Bash 壳体中的管道分叉,bash,shell,pipe,pipeline,Bash,Shell,Pipe,Pipeline,首先,我尝试在Google和Stackoverflow中搜索类似的主题,但没有找到任何类似的内容 问题: 有没有办法处理shell中的管道分叉 示例: 我有以下目录树: > 1 >> 1.a >> 2.a >> 3.a > 2 >> 1.b >> 2.b >> 3.b 当我执行命令时: ls -1 */* | nl 我得到以下输出: 1 1/1.a 2 1/2.a 3 1/3.a 4 2/1.b 5
> 1
>> 1.a
>> 2.a
>> 3.a
> 2
>> 1.b
>> 2.b
>> 3.b
当我执行命令时:
ls -1 */* | nl
我得到以下输出:
1 1/1.a
2 1/2.a
3 1/3.a
4 2/1.b
5 2/2.b
6 2/3.b
如果我想引用第一列,我会使用带-f1参数的cut。同样,如果我想引用第二列,我将使用-f2参数。我可以以某种方式使用下面的命令吗
ls -1 */* | nl | mv `cut -d' ' -f1` `cut -d' ' -f2`
我不介意重命名这些文件的方式。实际上,我想知道shell中是否存在并行管道。您可以将此用于循环:
while read -r f1 f2; do
[[ -n "$f1" && -n "$f2" ]] && mv "$f1/$f2" "$f2"
done < <(ls -1 */* | nl)
您可以将此用于循环:
while read -r f1 f2; do
[[ -n "$f1" && -n "$f2" ]] && mv "$f1/$f2" "$f2"
done < <(ls -1 */* | nl)
您可以将此用于循环:
while read -r f1 f2; do
[[ -n "$f1" && -n "$f2" ]] && mv "$f1/$f2" "$f2"
done < <(ls -1 */* | nl)
您可以将此用于循环:
while read -r f1 f2; do
[[ -n "$f1" && -n "$f2" ]] && mv "$f1/$f2" "$f2"
done < <(ls -1 */* | nl)
解析
ls
is的输出;我将使用以下内容来代替
count=1
对于f in*/*;做
回声mv“$f”$((计数++))
完成
解析ls
is的输出;我将使用以下内容来代替
count=1
对于f in*/*;做
回声mv“$f”$((计数++))
完成
解析ls
is的输出;我将使用以下内容来代替
count=1
对于f in*/*;做
回声mv“$f”$((计数++))
完成
解析ls
is的输出;我将使用以下内容来代替
count=1
对于f in*/*;做
回声mv“$f”$((计数++))
完成
您在这里想要实现什么?如果我解释mv
它看起来像是你在尝试做类似mv 1.a
的事情。你的意思是像mv1.a1这样的东西吗?对不起,我忘了目录前缀,所以它应该是:mv1/1.a1
你想在这里实现什么?如果我解释mv
它看起来像是你在尝试做类似mv 1.a
的事情。你的意思是像mv1.a1这样的东西吗?对不起,我忘了目录前缀,所以它应该是:mv1/1.a1
你想在这里实现什么?如果我解释mv
它看起来像是你在尝试做类似mv 1.a
的事情。你的意思是像mv1.a1这样的东西吗?对不起,我忘了目录前缀,所以它应该是:mv1/1.a1
你想在这里实现什么?如果我解释mv
它看起来像是你在尝试做类似mv 1.a
的事情。你是说像mv1.a1
之类的东西吗?对不起,我忘了目录前缀,所以它应该是:mv1/1.a1
,因为OP使用了BASH
标记,所以最好使用[…]]
而不是旧的[…]
@GoodPerson:with[[
,&
是没有的选项[
(这大概是你所提倡的)。既然问题被标记了,一个只有Bash的解决方案就可以了,尽管它也被标记为Shell,一个更接近中性的解决方案也会很好。即使移植性是一个问题,POSIX规范本身也推荐[-n“$f1”]&&[-n“$f2”]
而不是[-n”$f1“-a-n”$f2”]
@GoodPerson然后标签应该被更正;不需要阅读用户的想法。@显示你正在寻找的东西不存在;这是你问题的解决方案,不管它看起来是否像你想要的。由于OP使用了BASH
标签,最好使用[…]
而不是旧的[…]
@GoodPerson:with[[[
,&&&
是[
所没有的选项(这大概是您所提倡的)。由于问题已标记,因此仅使用Bash的解决方案是可以的,但由于它也标记为Shell,因此更接近中性的解决方案也是不错的。即使可移植性是一个问题,POSIX规范本身也建议[-n“$f1”]&&&[-n“$f2”]
而不是[-n”$f1“-a-n”$f2”]
@GoodPerson然后标签应该被更正;不需要阅读用户的想法。@显示你正在寻找的东西不存在;这是你问题的解决方案,不管它看起来是否像你想要的。由于OP使用了BASH
标签,最好使用[…]
而不是旧的[…]
@GoodPerson:with[[[
,&&&
是[
所没有的选项(这大概是您所提倡的)。由于问题已标记,因此仅使用Bash的解决方案是可以的,但由于它也标记为Shell,因此更接近中性的解决方案也是不错的。即使可移植性是一个问题,POSIX规范本身也建议[-n“$f1”]&&&[-n“$f2”]
而不是[-n”$f1“-a-n”$f2”]
@GoodPerson然后标签应该被更正;不需要阅读用户的想法。@显示你正在寻找的东西不存在;这是你问题的解决方案,不管它看起来是否像你想要的。由于OP使用了BASH
标签,最好使用[…]
而不是旧的[…]
@GoodPerson:with[[[
,&&&
是[
所没有的选项(这大概是您所提倡的)。由于问题已标记,因此仅使用Bash的解决方案是可以的,但由于它也标记为Shell,因此更接近中性的解决方案也是不错的。即使可移植性是一个问题,POSIX规范本身也建议[-n“$f1”]&&&[-n“$f2”]
而不是[-n”$f1“-a-n”$f2”]
@GoodPerson然后应该更正标记;不需要阅读用户的想法。@显示您正在寻找的内容不存在;这是您问题的解决方案,无论它看起来是否像您认为需要的内容。