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

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

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

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

205閲覧

ボリュームにあるすべてのディレクトリーの更新日を取得してその時間に10秒プラスした更新日を設定したいです

yasutaka86

総合スコア15

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2019/01/19 01:23

前提・実現したいこと

Ubuntu16.04LTSでNetatalk(afp)サービスを稼働しています。
そのボリューム内のディレクトリーのみ更新日を再設定したいです。
そのために最適と考えられるスクリプトや開発言語、もしくはユーティリティ、対策を教えてください。

発生している問題・エラーメッセージ

AFPとSMBサービスは同ボリュームですが、afpで閲覧した時だけディレクトリーをクリックするとディレクトリーのみ更新日が変更されてしまいます。ディレクトリーをオープンすると下層にあるオープン済のディレクトリーも同様ーに日時が更新されてしまいます。

### 試したこと 1、.DS_Storeが作成されることによる更新と考え、.DS_Storeがボリューム内に作成しない設定で運用しました。 2、iptables ufw等でパケットフィルタリングを行い、TCP UDP in outの双方向、139、548、22、5900以外をrejectし運用しました。 3、touch -d コマンドを使用し、書き換えられた更新日を以前の日時に戻しました。 上記で効果があったのは3番のtouch -d コマンドで書き換えた後は、ディレクトリーはファイル、ディレクトリーを書き換えない限り更新日が変更しませんでした。 ### 補足情報(FW/ツールのバージョンなど) Netatalkバージョン3.1.12 SAMBA 4.7.12 ここにより詳細な情報を記載してください。 C言語2ヶ月程度の初心者です。 シェルスクリプトを組みたいのですが、まだそのスキルがありません。 ディレクトリーだけでなくすべてのファイルも更新した方が良いかどうかが検証できていません。 ご教示いただけましたら幸いです。 よろしくお願いいたします。

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

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

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

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

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

otn

2019/01/19 09:15

経緯・状況は分かりましたので、何をしたいのかを具体的に書いてください。 fooというディレクトリの更新日時が 2019-01-10 00:00:00 だとすると、 これを 2019-01-10 00:00:10 にしたいということですか?
yasutaka86

2019/01/19 13:30

otn様 この度はお問い合せをいただき恐縮です。 またご不明部分に関しましてご迷惑をおかけいたしました。 日時変更につきましては、極端な例で言えば以前の秒の値と変化していればどんな数値でも結構です。 例① 2019-01-10 00:00:00 → 2019-01-10 00:00:01 例② 2019-01-10 23:59:59 → 2019-01-10 23:59:00 秒の数値だけが変えたいです。または決まった秒のみ00秒になっても構いません。分への繰り上がりはナシでお願い申し上げます。 ありがとうございました。 何卒、よろしくお願いいたします。
guest

回答1

0

ベストアンサー

とあるディレクトリのサブディレクトリ全部の時刻を変更するとして、

Bash

1#!/bin/bash 2find 目的ディレクトリ -type d | 3while read dir 4do A=($(date -r "$dir" "+%Y-%m-%d %H:%M %S")) 5 let S=(${A[2]}+1)%60 6 touch -d "${A[0]} ${A[1]}:$S" "$dir" 7done

秒は、1を足して60で割った余りを取っています。

投稿2019/01/19 13:59

otn

総合スコア84421

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

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

yasutaka86

2019/01/19 16:41

otn様 早速のご教示ありがとうございました。 直ぐさま確認させていただきます。 取り急ぎ御礼申し上げます。
yasutaka86

2019/01/19 17:22

大変勉強になりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問