2017-03-21 15 views
0

DSM6.1のアップデート後にホーム共有を暗号化しようとすると、ファイル名が143文字より長いファイルがあるというメッセージが表示されます。これは、暗号化されたSynology共有のファイル名の最大長です。Synologyで暗号化された共有には長すぎるファイルを見つけよう

家の中にはたくさんのものがあります(主に私自身)ので、手作業でファイルを検索するのは現実的ではありませんでした。それにもかかわらず、これらのファイルは、共有の暗号化を可能にするために、削除または名前変更するを持っていました。

ファイル名が143文字より長いすべてのサブディレクトリ内のすべてのファイルを自動的に検索する必要がありました。 Windowsツールを使用してネットワーク共有経由でファイルを検索すると、おそらく時間がかかりすぎたでしょう。

私は自分自身で解決策を見つけましたが(私はまだn00bなので、いくつかのインターネットリサーチを行っています)、同じ問題を抱えている人にはこのメリットがあるかもしれません。

答えて

0

だからここには行く:

トリックを行いgrepと組み合わせてfind機能。

find /volume1/homes/ -maxdepth 15 | grep -P '\/[^\/]{143,}[^\/]' 

私の場合は、おそらく15個以上のネストされたディレクトリがないと想定していました。最大深度と開始ディレクトリは、必要に応じて調整することができます。

引数が-Pの場合は、Perlをインストールする必要があるかもしれませんが、私はそれについては分かりません。

RegExは、/のいずれかの後に/以外の任意の文字の後に14337以上があり、その後に/を持たないすべての要素に一致します。これにより、ファイルとディレクトリは取得されません。正規表現はこれにあまり馴染みがないかもしれません人のために説明し

を含むディレクトリのためには、最後の条件を残すことができます:

  • \/

    はスラッシュを探します。新しいファイル/ディレクトリ名がここから始まります。
  • [^\/]手段:/
  • {143,}除くすべての文字を意味する:上記のように、先行するトークン
  • [^\/]同一の143回以上の繰り返し。これは、ファイルに属していないすべての結果を除外します。
0
find . -type f -iname "*" |awk -F'/' 'length($NF)<=143{print $0}' 

これは、その名の長さを計算しながら、これはファイル名のみではない完全なパスを検討していることを以下143ノートに等しいすべてのファイルを印刷します。長さ全体のパスを考慮する場合:

find . -type f -iname "*" |awk 'length($0)<=143{print $0}' 
関連する問題