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.txt
。100 billion humans.txt