28

ディレクトリには、いくつかのさまざまなファイルがあります -そして.txt、修飾子.shのないファイルを計画します。.foo

lsディレクトリの場合:

blah.txt
blah.sh
blah
blahs

.foo変更なしでファイルのみを使用するように for ループに指示するにはどうすればよいですか? したがって、上記の例では、何とかファイルを「処理」してください。

基本的な構文は次のとおりです。

#!/bin/bash
FILES=/home/shep/Desktop/test/*

for f in $FILES
do
    XYZ functions
done

ご覧のとおり、これはディレクトリ内のすべてを効果的にループします。.sh.txtまたはその他の修飾子を除外するにはどうすればよいですか?

私はいくつかのifステートメントで遊んでいますが、変更されていないファイルを選択できるかどうか本当に興味があります.

また、.txt のないこれらのプレーン テキスト ファイルの適切な専門用語を教えてもらえますか?

4

3 に答える 3

36
#!/bin/bash
FILES=/home/shep/Desktop/test/*

for f in $FILES
do
if [[ "$f" != *\.* ]]
then
  DO STUFF
fi
done
于 2013-02-12T01:10:06.823 に答える
12

もう少し複雑にしたい場合は、find コマンドを使用できます。

現在のディレクトリの場合:

for i in `find . -type f -regex \.\\/[A-Za-z0-9]*`
do
WHAT U WANT DONE
done

説明:

find . -> starts find in the current dir
-type f -> find only files
-regex -> use a regular expression
\.\\/[A-Za-z0-9]* -> thats the expression, this matches all files which starts with ./
(because we start in the current dir all files starts with this) and has only chars
and numbers in the filename.

http://infofreund.de/bash-loop-through-files/

于 2014-08-18T21:55:01.510 に答える
2

負のワイルドカードを使用できますか? それらを除外するには:

$ ls -1
a.txt
b.txt
c.png
d.py
$ ls -1 !(*.txt)
c.png
d.py
$ ls -1 !(*.txt|*.py)
c.png
于 2013-02-12T01:05:59.083 に答える