2017-11-07 6 views
0

名前の任意の位置にパラメータがあり、afterステートメントが真である特定のファイルがないかどうかをチェックするスクリプトを作成しようとしています(そのようなファイルはありません)、関数はパラメータ$ 1と同じ名前のディレクトリを作成し、symlink Currentから新しく作成されたディレクトリにファイルを移動し、その後、/ current /には存在せず、名前@tpまたは数に含まれるすべてのファイルを検索して削除します。私はこのようなことを書いてきましたが、なぜそれが機能していないのかわかりません。何か助けてもらえますか? :)Linuxの複数のFINDステートメントとIF条件//bash

if[-ne $1]; then mkdir $1 && mv /current/* data/data2/data3/$1 

     find /home/ -not -path /current/ -and -not -newer /current/ -and -name *@tmp" -exec rm -r {} \; -name "*[0-9]*" -exec rm -r {} \; 

     else 

     echo "There is this tag already " 

     fi 

答えて

0

あなたは存在しないディレクトリをチェックしたい場合は、あなたがこれを使用することができます。

if [ ! -d $1 ] 

代わりの

if [ -ne $1 ] 

更新:前のコマンドだけでしょう一致するフォルダ名を探します。パラメータを含むフォルダを検索する場合は、次のようなものを使用することができます。

if [[ `find -maxdepth 1 -type d -name "*${1}*"` = "" ]]; then 
     # ... commands when your param is not part of any dir ... 
fi 
+1

'['と ']'のスペースに注意し、おそらく '' $ 1 ''を引用する方が良いでしょう。 – cdarke

+0

別のもの、もしあれば! -d $ 1は、ファイルに任意の位置のパラメータが含まれているかどうか、またはファイルがパラメータと同じ名前を持っている場合のみチェックしますか? – harcotlupus

+0

そして、残りのスクリプトについては、それは合法的に見えますか?理解していただきありがとうございます :) – harcotlupus

関連する問題