現在のフォルダー内のすべてのファイル/フォルダーに対して特定のコマンドを実行するにはどうすればよいですか?
私はこれを基本スクリプトとして始めましたが、これは一時ファイルを使用する場合にのみ機能するようであり、私はアイデアを本当に好きではありません。他に方法はありますか?
FOLDER=".";
DIRS=`ls -1 "$FOLDER">/tmp/DIRS`;
echo >"/tmp/DIRS1";
while read line ; do
SIZE=`du "$FOLDER$line"`;
echo $SIZE>>"/tmp/DIRS1";
done < "/tmp/DIRS";
興味のある方のために、サイズ順に並べ替えたフォルダのリストを作成しました。これが最終結果です
FOLDER="$1";
for f in $FOLDER/*; do
du -sb "$f";
done | sort -n | sed "s#^[0-9]*##" | sed "s#^[^\./]*##" | xargs -L 1 du -sh | sed "s|$FOLDER||";
につながる du -sb $FOLDER/* | sort -n | sed "s#^[0-9]*##" | sed "s#^[^\./]*##" | xargs -L 1 du -sh | sed "s|$FOLDER||";
おそらくxargsは、標準入力で受け取ったパラメーターの追加行ごとに、その後に指定されたコマンドを再呼び出しします...
ls -1 $FOLDER | xargs du
しかし、この場合はどうして...
du *
...?または...
for X in *; do
du $X
done
(個人的には、zshを使用します。グロブパターンを変更して、通常のファイルのみ、またはディレクトリのみ、シンボリックリンクなどのみを検索できます。bashにも同様のものがあると確信しています-必要に応じて詳細を調べることができます)。
あなたの要件の一部が欠けていますか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加