1

次のようなフォルダ構造のディレクトリがあります。

DATA -- ABD 1231345 -- 2012_01_08
                    -- 2012_03_09
                    -- 2012_06_11

     -- DEF 4859480 -- 2012_02_10
                    -- 2012_05_10
                    -- 2012_07_10

私がやろうとしていることは:

  • cd DATA
  • /DATAからのすべての最初の子フォルダの名前を変更するbashスクリプトを(中に)実行します

ABD 1231345

ABD_1231345

Mac OSX / UNIXでコマンドラインを使用して実行する方法についての提案はありますか?

4

2 に答える 2

2
for i in *; do mv "$i" "${i// /_}"; done

${i//string/repl}構文はshの非標準の拡張ですが、次のようなものを使用して同じことを移植可能に行うことができます。

for i in *; do j=$( echo "$i" | tr ' ' _); mv "$i" "$j"; done
于 2012-09-14T16:19:14.290 に答える
0

現在のディレクトリには次のものが含まれます。

aa 111
bb 222
aaa.txt
aaa 1111.txt
bbb 2222.txt

出力:

aa_111
bb_222
aaa.txt
aaa 1111.txt
bbb 2222.txt

コード:

ls -ltr|awk -F" " '{print $9,$10}'|sed 's/ $//g'|grep -v "^$">abc

while read line
do
val=`echo $line`
echo $line|grep " ">/dev/null
rc=$?
if [[ -d "$val" && $rc -eq 0 ]]
then
replace=`echo $line|sed 's/ /_/g'`
mv "$val" "$replace"
fi
done<abc

rm -f abc

ここで、上記のスクリプトは、現在のディレクトリ内のフォルダの名前を変更しています。grepの部分はスキップできます(効率を上げるため)。

于 2012-09-14T19:47:03.750 に答える