質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

Q&A

解決済

3回答

1772閲覧

ローカルのAディレクトリの中にあるファイル名で、リモートのBディレクトリの中にある同名ファイルを消すにはどうすればよいでしょうか。(シェルで)

mirainu

総合スコア20

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

サーバ

サーバは、 クライアントサーバモデルにおいてクライアントからの要求に対し 何らかのサービスを提供するプログラムを指す言葉です。 また、サーバーソフトウェアを稼動させているコンピュータ機器そのもののことも、 サーバーと呼ぶ場合もあります。

0グッド

0クリップ

投稿2016/09/28 02:27

お世話になっております。

リモートサーバーにftpでファイルをアップロードしているのですが、
シェルを用いて、
あるリモートディレクトリ内の不要なファイルを消したいと思っています。

ただし、mdelは一気に消してしまうため怖いので、
1つ1つファイル名を指定し、消したいのです。(シェルで)

当方、linux環境です。
リモートへのrlogin、telnetなど使えません。
ftpコマンドは使えます。

(現状)
・ftpコマンドには、ifやfindでファイルを検索するものがない
・シェルで、コマンドと、ftpコマンドを混ぜればできるかなと思ったのですが、
そのやり方が分からない。

ローカルのAディレクトリの中にあるファイル名で
リモートのBディレクトリの中にある同名ファイルを消すにはどうすればよいでしょうか。(シェルで)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

shell

1SERVER=$1 2USER=$2 3PASS=$3 4 5 6for FILE in Aディレクトリパス/* 7do 8 if [ -f ${FILE} ]; then 9 10 ftp -n <<END 11open $SERVER 12user $USER $PASS 13cd Bディレクトリ 14binary 15prompt 16del $(basename ${FILE}) 17END 18 19 fi 20done

未検証です。こんな感じの記述でいけるかと思います。
参考URL
http://mikeda.hatenablog.com/entry/20081027/1225121364
http://wordpress.honobono-life.info/code/bash%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%86%85%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E4%B8%80%E8%A6%A7%E3%81%A8/

投稿2016/09/28 02:50

編集2016/09/28 02:52
s.t.

総合スコア2021

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

簡単ですが

bash

1#!/bin/sh 2cd dirA 3flist=($(ls)) 4ftp -n <<_EOF_ 5open hoge_server 6user uhoge phoge 7cd dirB 8del ${flist[@]} 9bye 10_EOF_ 11

投稿2016/09/28 04:01

A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mirainu

2016/10/04 01:03

ありがとうございます。1番簡単そうなので選ばさせていただきました。
guest

0

こんな感じですか?

bash

1#!/bin/sh 2 3FTPCMDFILE="ftpcmd.txt" 4LOCAL_DIR="/home/hoge/aaa" 5REMOTE_DIR="/aaa" 6FTP_HOST="192.168.1.100" 7FTP_USER="foo" 8FTP_PASS="pass" 9 10echo "open ${FTP_HOST}" > ${FTPCMDFILE} 11echo "user ${FTP_USER} ${FTP_PASS}" >> ${FTPCMDFILE} 12echo "cd ${REMOTE_DIR}" >> ${FTPCMDFILE} 13 14cd ${LOCAL_DIR} 15find . -maxdepth 1 -type f | sed -e 's/^\.\//del /' >> ${FTPCMDFILE} 16 17ftp -n < ${FTPCMDFILE}

投稿2016/09/28 03:04

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問