Linux 在Shell中列出并更改目录并运行命令

Linux 在Shell中列出并更改目录并运行命令,linux,bash,shell,cygwin,sh,Linux,Bash,Shell,Cygwin,Sh,大约6年后,我将回到壳牌公司。 我有一个目录结构,比如说, 主目录->子目录1/some.xml ->子目录2/some.xml ... ... ->子目录yn/some.xml 我想在所有子目录中执行some.xml,然后使用>操作符将结果输出到文件中。 什么是合适的脚本?我尝试了两种选择,但都没能做到。有人能帮忙吗?编辑: 您可以这样做: cd <path_to_main_directory> for subdir in */ do pushd "$subdir"

大约6年后,我将回到壳牌公司。 我有一个目录结构,比如说,

主目录->子目录1/some.xml ->子目录2/some.xml ... ... ->子目录yn/some.xml

我想在所有子目录中执行some.xml,然后使用>操作符将结果输出到文件中。 什么是合适的脚本?我尝试了两种选择,但都没能做到。有人能帮忙吗?

编辑:

您可以这样做:

cd <path_to_main_directory>
for subdir in */
do
    pushd "$subdir"
    <do_smth> some.xml > output.txt
    popd
done

“执行”xml文件是什么意思?比方说,在find命令中执行一个ant job-build.xmlook。对于它发现的一切,你可以执行命令,请避免给我的密码问题。而是显示您正在处理的脚本,并说明问题所在。另请参见为什么不在*/?ls的使用几乎总是一个文件名有空格的问题。我测试过,看起来像是*/中的subdir,不修复目录名中空格的问题吗?哦,nvm,我现在看到了区别,认为这是一个更好的解决方案。我认为这很有效。谢谢你们两位。这将节省我很多时间。你能有时间解释一下这些是什么吗?in*/pushdpopd@Xavi您可以在*中进行归档;要在每个文件/文件夹上循环,p*将匹配从p开始的每个文件/文件夹,*/将只匹配目录。pushd类似于cd,但会将您以前的位置保留在内存中。popd会带你回去的。