ここから本文です

2010年に、”決められたディレクトリ内のファイルのタイムスタンプの古い物から順に...

ryo********さん

2012/2/312:51:26

2010年に、”決められたディレクトリ内のファイルのタイムスタンプの古い物から順に削除するスクリプト”についてご教示頂きました。おかげ様で、サーバーは現在も上手く稼働しており感謝しております。

最近以下の問題に遭遇しており、厚かましいお願いですが、お知恵をお借り出来ればありがたいです。

現在、ubuntu9に、地デジチューナのpt2とepgrecを組み合わせて地デジの録画サーバーを構築しています。録画済みのtsファイルを貯めるディレクトリをsambaで共有しておき、東芝REGZA Z1のLAN DISKの機能を使って視聴しています

REGZAの場合、tsファイル名に全角の波 “ ~ ”が含まれると再生できないばかりかファイル名取得時にエラーが出てしまいます。
そこで、特定のディレクトリ内にあるファイルに ~ が含まれる場合 ~ を _ 等に置き換えてリネームするスクリプトを走らせたいのですが、スキル不足で無理そうです。申し訳ございませんが是非例を示していただきたくお願いします。

この質問は、d_d********さんに回答をリクエストしました。

閲覧数:
256
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

d_d********さん

リクエストマッチ

2012/2/501:47:05

#! /bin/bash

MOJI1=~
MOJI2=_
cd /home/user/try/q1080707950/testdir ## ここにディレクトリを指定

for NAME1 in *${MOJI1}*
do
if [ -f "$NAME1" ]; then
NAME2="`printf "%s" "$NAME1" | sed s/$MOJI1/$MOJI2/g`"
if [ ! -f "$NAME2" ]; then
mv "$NAME1" "$NAME2"
fi
fi
done


これで、ご希望の動きはすると思います。
お試しください。

質問した人からのコメント

2012/2/5 23:11:10

ありがとうございました。うまく動作することが確認できました。
renameコマンドでもいけるのですが、ファイル名に~が複数ある場合、数回コマンドを繰り返す必要ありました。

ベストアンサー以外の回答

1〜1件/1件中

zyp********さん

2012/2/401:30:29

renameコマンドを使えばいいだけでは?

rename "検索する文字列" "置き換える文字列" "ファイル名"

質問者様の状況の場合は rename "〜" "_" * となります。

ただし、置換時に上書き確認はされないので、置換後のファイル名が同一名称にある場合は問答無用に上書きされます。
(オプションがあったら申し訳)

例えば、以下の2ファイルがある場合に、 rename aaa bbb * と実行したらaaa.txtは消滅し、bbb.txtが"あああ"としてのみ残ります。

***コマンド実行前
aaa.txt (中身ー>) あああ
bbb.txt (中身ー>) びびび
***コマンド実行後 (aaa.txtはなくなる。bbb.txtの中身は上書きされるので消去される。)
bbb.txt (中身ー>) あああ

ファイル名の規則性が読めず、上書き処理する可能性がある場合はシェルスクリプトを作る必要がありますが、質問者様の環境(ファイル名の規則性)はどのような感じでしょうか?

なお、シェルスクリプトを組む場合は、ディレクトリ構造(階層があるのかどうか)を確認する必要があります。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo!知恵袋カテゴリ

一覧を見る

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる