如何远程使用 shell 脚本搜索目录模式

发布于 2024-07-27 19:00:47 字数 175 浏览 7 评论 0原文

我需要使用 scp 更新另一台服务器上的某些目录。 它类似于,

for i in /usr/some/???/unknown/dir
do
cp /usr/some/file $i
done

当目标目录位于其他服务器上时,我如何进行搜索?

谢谢

I need to use scp update some directory at another server. It is similar to

for i in /usr/some/???/unknown/dir
do
cp /usr/some/file $i
done

so how can i do the search while the destination directories are on other server?

thank you

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

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

发布评论

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

评论(4

站稳脚跟 2024-08-03 19:00:47

每个人都忘记处理文件名中的空格:P

重用 LB 的示例:

OLD_IFS=$IFS
IFS=$\'n'
for i in `ssh user@otherhost find /usr/some -type d -name dir`
do
  scp user@otherhost:"/usr/some/dir/$i" .
done
IFS=$OLD_IFS

这将循环输出的每一行而不是每个单词(并且 $i 被引用)。

Everybody forgets to handle spaces in file names :P

To reuse LB's example:

OLD_IFS=$IFS
IFS=$\'n'
for i in `ssh user@otherhost find /usr/some -type d -name dir`
do
  scp user@otherhost:"/usr/some/dir/$i" .
done
IFS=$OLD_IFS

This will loop over each line of output instead of each word (and $i is quoted).

白云不回头 2024-08-03 19:00:47
for i in `ssh user@otherhost ls /usr/some/dir/` 
do
 scp user@otherhost:/usr/some/dir/$i .
done
for i in `ssh user@otherhost ls /usr/some/dir/` 
do
 scp user@otherhost:/usr/some/dir/$i .
done
清欢 2024-08-03 19:00:47
for i in `ssh user@otherhost find /usr/some -type d -name dir`
do
  scp user@otherhost:/usr/some/dir/$i .
done

我猜这个发现就是你正在寻找的东西......

for i in `ssh user@otherhost find /usr/some -type d -name dir`
do
  scp user@otherhost:/usr/some/dir/$i .
done

the find is what you're looking for I guess...

翻身的咸鱼 2024-08-03 19:00:47

如果您在远程服务器上具有 shell 访问权限,请远程创建目录列表(使用 find 或 ls 或您在 shell 脚本中使用的任何命令),然后将其复制回您要复制的系统。 然后你可以使用

for d in file_of_remote_dirs; do
    scp /usr/some/file remote_machine:d;
done

If you have shell access on the remote server, create a list of the directories remotely (using find, or ls, or whatever you'd use in your shell script), and copy it back to the system you're copying from. Then you can use

for d in file_of_remote_dirs; do
    scp /usr/some/file remote_machine:d;
done
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文