- PR -

通常のファイルと隠しファイルを同時に移動する方法

1
投稿者投稿内容
くつ
常連さん
会議室デビュー日: 2004/05/05
投稿数: 30
投稿日時: 2004-09-13 12:54
通常のファイル("aaa"や"bbb.txt")と、隠しファイル(".xxx")を
一度で同時に移動したり削除したい場合、どのように記述すれば良いでしょうか?
# Solaris
# Bシェル
---
(例1:通常のファイルのみ移動)
> ls -a
.xxx aaa bbb.txt
> \mv ./* ../workdir
> ls -a
.xxx

(例2:隠しファイルのみ移動)
> ls -a
.xxx aaa bbb.txt
> \mv ./.* ../workdir
> ls -a
aaa bbb.txt

(例3:ドットの前後に文字があるもののみ移動)
> ls -a
.xxx aaa bbb.txt
> \mv ./*.* ../workdir
> ls -a
.xxx aaa
---

どうぞ、よろしくお願いします。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-09-13 13:06
あるディレクトリ以下のファイル全部 :

$ mv * .??* ../workdir
$ rm * .??*
くつ
常連さん
会議室デビュー日: 2004/05/05
投稿数: 30
投稿日時: 2004-09-13 14:14
回答ありがとうございます。

.??* の "??"とは、
"." ".." を考慮されてということですね。

たしかに、
> \mv .*
の戻り値を利用しようかと思っているのですが、
この場合、"." ".."についてエラーが出るため、
実際の隠しファイルは移動できたものの、
"." ".."が原因で戻り値としてはエラーとなってしまうのでは?と
懸念していました。

的確なご回答ありがとうございました。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-09-13 16:07
>この場合、"." ".."についてエラーが出るため、
>実際の隠しファイルは移動できたものの、
>"." ".."が原因で戻り値としてはエラーとなってしまうのでは?と
>懸念していました。

それやったら

コード:
#!/bin/sh

for i in * .??*
do
    if [ $i = '.' -o $i = '..' ]; then
        :
    else
        mv $i ../workdir
#        rm ../workdir/$i
    fi
done

かずぼん
会議室デビュー日: 2004/03/12
投稿数: 15
お住まい・勤務地: 東京都多摩地区
投稿日時: 2004-09-17 18:32
# rm a* .[A-z]*
正規表現を使いこなしましょう。
1

スキルアップ/キャリアアップ(JOB@IT)