0

実行されるディレクトリとサブディレクトリを通過し、pdfなどの特定のファイルタイプを検索して削除し、削除されたファイルの名前で空のファイルを作成するスクリプトがあります。名前にスペースが含まれるファイルとフォルダーを無視することを除いて、問題なく動作します。スクリプトは次のとおりです。

#!/bin/sh

#
#  Created by User on 6/20/11.
#

dir=./
for files in $(find -L "$dir" -name '*.pdf' -mtime +90);
do
echo $files
rm -fR $files
touch $files.removed
done

このスクリプトを作成して、あらゆる種類の名前のすべてのファイルとフォルダーを処理する方法を提案できる人はいますか?

よろしくお願いします

4

3 に答える 3

3

のデフォルト値では、IFSスペースに遭遇すると単語が分割されます。言う:

for files in $(IFS=$'\n' find -L "$dir" -name '*.pdf' -mtime +90);

上記IFS=$'\n'のようにすると、単語の分割は改行でのみ発生するため、スペースを含むファイル名はうまく機能します。

于 2013-10-22T09:39:24.587 に答える
2

スクリプトをこのようにして、二重引用符を使用することをお勧めします。

dir=./
while read files
do
   echo "$files"
   rm -fR "$files"
   touch "$files".removed
done < <(find -L "$dir" -name '*.pdf' -mtime +90)
于 2013-10-22T09:51:21.137 に答える