今FreeBSDでファイルを削除する際にそのまま消すのではなく一旦 ~/.trash/ というディレクトリに移動させるスクリプトを作っています。
しかし私はスクリプトを作ったことがほとんどないためなかなあうまくいきません。
本を見て
#! /bin/sh
mv $@ ~/.trash/
という単純なものはできたのですが
これだとディレクトリを削除してゴミ箱に送った後同じ名前のファイルを
ゴミ箱に送ろうとするとエラーが起きてしまいます。
そこでゴミ箱に送る際ファイル名を
削除するファイル.現在の時刻
にしようと思い
#! /bin/sh
# move to the trash directory
TRASHTIME=`date +"20%y-%m%d-%k%M%S"`
mv $@ $@.$TRASHTIME
mv $@.$TRASHTIME ~/.trash/
としてみたのですが全然うまくいきませんでした。
どのようにしたらうまくいくでしょうか?
No.3
- 回答日時:
%k より %H のほうが後で見やすいと思いますよ。
#!/bin/sh
TRASHTIME=`date +%Y-%m%d-%H%M%S`
for f
do
file=`expr "$f" : '\(.*\)/$' \| "$f"`
mv $file ~/.trash/$file.$TRASHTIME
done
でどうでしょうか。
file=の行は、各引数($f)の末尾が/ならそれを取り除いてセットしています。
>としてみたのですが全然うまくいきませんでした。
「こういう結果を期待して、こういう操作を行ったが、こういう結果であった」と書くと他人にも伝わります。
この回答への補足
全然うまくいかなかったというのは
複数のファイルを削除しようと思ったときに不具合が起きたということです。
例えば a b c d e の五つのファイルを削除しようと思ったときに
$@.$TRASHTIME
が
a b c d e.2005・・・
となってしまうので最後のファイルしかファイル名が変更されなくなってしまうということです。
どうもありがとうございます。
何でも聞いてばかりで申し訳ないのですが
このままだと引数として
../a/a/ff/f/as/r/d/fg/gomi
と指定すると
~/.trash/../a/a/ff/f/as/r/d/fg/gomi.・・・・・
というファイルが作成されてしまいます。
なので一番最後のスラッシュを削除し、
それ以外のスラッシュの中で一番末尾に近いスラッシュより左を削除してしまうようにはできないでしょうか?
つまり
../a/f/r/d/abcd/efgh/gomi/
が
gomi.・・・・・・
というふうにできないでしょうか、ということです。
No.1
- 回答日時:
こんばんは。
fbsd5453さんが作成されたスクリプトを拝見したところ、引数に例えば./test/
というディレクトリ名を指定した場合に、$@によって、返される文字列が
test/
になってしまうために、mvコマンドが、
mv test test/.2005-0713-214150
のように与えられてしまうようです。このtestの後のスラッシュを削除しないと、自分自身を自分自身の中に移す、ということになってしまってエラーになります。そこで、例えば
#! /bin/sh
# move to the trash directory
TRASHTIME=`date +"20%y-%m%d-%k%M%S"`
mv $@ ~/.trash/`echo $@.$TRASHTIME | sed 's/\///'`
のように、sedコマンドでスラッシュを取り除いてみるとうまくいくようです。ただ、私も十分シェルスクリプトに習熟している訳ではないので、もっと良い方法はあると思います。
ありがとうございます。
スラッシュだけをそのまま削除すると
./a とか ../a とか指定すると . が残ってしまうので
#! /bin/sh
# move to the trash directory
TRASHTIME=`date +"20%y-%m%d-%k%M%S"`
mv $@ ~/.trash/`echo $@.$TRASHTIME | sed 's/\.\.\///' | sed 's/\.\///' | sed 's/\///'`
というようにしましたが問題ないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- ノートパソコン PCでドキュメントに保存してるフォルダーを削除しゴミ箱からも削除しました。 なのに何故か数日するとい 4 2023/04/02 11:57
- Windows 10 フォルダをパソコンから削除してもまた現れます。 5 2023/04/15 11:45
- iCloud 【至急】 自分のiPhoneの中にある写真をパソコンに取り込むために、iCloudから写真をUSBケ 2 2023/07/06 21:54
- Mac OS パソコンに詳しい方教えてください 現在MacBookを使ってるんですがiTunesで曲をダウンロード 2 2022/06/18 18:41
- Visual Basic(VBA) あるマクロを起動し、その際に使用したデスクトップにある1.csv(マクロを起動したせいで加工されてい 3 2023/06/02 22:35
- ノートパソコン cipher でデータが消えない 4 2022/06/01 14:58
- Windows 10 win10 立ち上げ時のエラー 1 2023/04/17 11:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
net use /d の強制実行
-
tarで纏める際に、複数場外した...
-
誤って/home配下を削除してしま...
-
コマンドプロンプトでコマンド...
-
Windowsのローカルディレクトリ...
-
tar.bz2ファイルのインストール...
-
rmとrmdirについて
-
絶対パスでアーカイブされたフ...
-
制限付きシェルについて
-
cpioコマンド
-
"no space left on device"と出...
-
バックアップファイルからの/us...
-
Linuxのスラッシュ,ピリオドの...
-
ブレース展開の使い方での質問です
-
Dirコマンドでフォルダ内ファイ...
-
TOPコマンドで表示するCPU使用...
-
エクセルの表にヘンな枠が・・・
-
スクリプトのエラー「unexpecte...
-
UNIX コマンドにおける # や円...
-
iqoo neo 9と言うスマホがある...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
net use /d の強制実行
-
Windowsのローカルディレクトリ...
-
tarで纏める際に、複数場外した...
-
tar.bz2ファイルのインストール...
-
コマンドプロンプトでコマンド...
-
誤って/home配下を削除してしま...
-
sylpheedメールソフト 受信でき...
-
Apache2.4のダウンロードについて
-
tarでフォルダに上書き
-
rmとrmdirについて
-
rc.d や init.d の 「.d」の意味
-
ブレース展開の使い方での質問です
-
DOSコマンドで cmd /c rd /s /...
-
ls -1R の結果をフルパスで欲しい
-
Linuxのスラッシュ,ピリオドの...
-
ImageMagickの使い方を教えて下...
-
ln ハードリンクをワイルドカー...
-
PATHを使ってcdなどで簡単に移...
-
絶対パスでアーカイブされたフ...
-
FTPのエラーメッセージで質問で...
おすすめ情報