buntu 16.04 64ビットデスクトップがあり、過去にwine
をインストールし、後で削除しました。さて、txtファイル in nautilus
を開こうとすると、多くの場合、dailouge boxが表示されますファイルは実行可能であり、Irunまたはdisplay それ。私はこの振る舞いに悩まされており、これらのファイルからexecuteパーミッションを取り消したいと思っています。誰かがこれを行う方法を教えてくれると助かります。
ありがとう
ホームディレクトリとそのすべてのサブディレクトリにあるすべての.txt
ファイルから実行ビットを削除するには、次を試してください。
find "$HOME" -type f -executable -name '*.txt' -execdir chmod a-x {} +
使い方:
find "$HOME"
これにより、find
が開始され、ホームディレクトリで始まり、すべてのサブディレクトリを再帰的に含むファイルが検索されます
-type f
これにより、find
はディレクトリではなく通常のファイルのみを検索するようになります。
ディレクトリから実行ビットを削除すると、そのディレクトリにアクセスできなくなるため、検索を通常のファイルに制限することが重要です。
-executable
これにより、find
は実行可能ビットが設定されているファイルのみを検索するようになります。
-name '*.txt'
これは、名前がグロブ*.txt
と一致するファイルのみを検索するようにfind
に指示します。
-execdir chmod a-x {} +
これにより、find
に、見つかったそのようなファイルに対してchmod a-x
を実行するよう指示します。
-execdir
とは対照的に、-exec
を使用します。これは、このコマンドの実行中にディレクトリ名が変更された場合の方が信頼性が高いためです。
+
の最後にある-execdir chmod a-x {} +
は、可能であれば各find
コマンドラインに多くのファイルを配置することにより、chmod
のインスタンスをより少なく実行するようchmod
に指示します。
find . -name "*.txt" -exec chmod a-x {} \;
find
コマンドは自明です。指定された引数に従ってファイルを検索します。使用法:find location comparison-criteria search term
find . -name "*.txt" -exec chmod a-x {} \;
こちら。ルートディレクトリを意味し、-name "*.txt"
は、名前に「.txt」を含むすべてのファイルを検索することを意味します。 -exec chmod a-x {} \;
は、一致するすべてのファイルでchmod
コマンドを実行することを意味します。