数字で始まるファイルの権限を変更するには?

数字で始まるファイルの権限を変更するには?

1から9までの数字で始まるファイルの権限を変更したいです(例:1.txtなど2.txt)。

私のコードは次のとおりです

    #!/bin/bash
for(( i = 1 ; i < 10; i++))     
do

for file in /home/vs                   
do
if[ "$file" == "$i" ];                 
then

chmod +456 $file


done                             
done 

しかし、これはうまくいかず、私の間違いがどこにあるのかわかりません。

答え1

コードにはスペースに関連するいくつかの構文問題が含まれており、1つのif文がありませんfi

456/home/vs名前が 1 から 9 までの数字で始まるディレクトリ内のすべてのファイルに対して数値権限を設定するには、次のようにします。

for (( i=1; i<=9; ++i )); do
    chmod 456 /home/vs/"$i"*
done

chmod特定の番号で始まるファイルがないと、苦情が発生する可能性があります。したがって、私たちが知っている名前を繰り返す方が一般的です。

for pathname in /home/vs/[1-9]*; do
    chmod 456 "$pathname"
done

これを1つのコマンドで短縮できます

chmod 456 /home/vs/[1-9]*

chmod名前が1から9までの数字で始まるすべてのファイルを呼び出します/home/vs。しかし、そのようなファイルが何千ものあれば失敗します(コマンドが実行するには大きすぎてループを使用している場合)。

.txtファイル名の一致をファイル名のサフィックスを持つファイルに限定するには、上記の[1-9]*.txtコマンドを使用します。これは1.txt、、2.txtなどのファイル名と一致します3 good friends.txt100 billion humans.txt

関連情報