1

mp3 および mp3.md5 ファイルを見つけて、それらを 1 つ上のディレクトリ レベルに移動しています。mv ターゲット パスをどのように示しますか?

見つかりました: http://www.cyberciti.biz/tips/howto-linux-unix-find-move-all-mp3-file.htmlこれはどのような助けになりますか -- ファイル構造は以下のとおりです。$LOCATION からスクリプトを実行しています。

|-- 681506b
|   |-- 681506b.xml
|   `-- Web_Copy
|       |-- 681506b_01.mp3
|       `-- 681506b_01.mp3.md5
DESIRED STRUCTURE AFTER DELETING 'Web_Copy' dir:
|-- 681506b
|   |--681506b.xml
|   |--681506b_01.mp3
|   |--681506b_01.mp3.md5

LOCATION="/var/www/web/html/testdata/"
DIRLIST=`ls -x`
for DIR in $DIRLIST
do
  if [ -d "$DIR" ]
   then
   find . -name "*.mp3*" -type f -print0|xargs -0L1 mv {} $LOCATION$DIR
  fi
done

ERROR: mv: target ./681506b/Web_Copy/681506b_01.mp3 is not a directory
S/B:  mv /var/www/web/html/testdata/681506b/
REPLACED mv with echo: 
{} /var/www/web/html/testdata/680593a./681506b/Web_Copy/681506b_01.mp3

どうも

4

3 に答える 3

1

findコマンドを次のように変更してみてください

find . -name '*.mp3*' -type f -print0 | xargs -0 -I list mv list ${LOCATION}${DIR}
于 2013-11-02T16:30:13.093 に答える
-2

このようなものになる可能性があります(テストされていません)

for i in $( find $LOCATION -type d -name 'Web_Copy' ); do 
  mv $i/* $i/.. && rmdir $i
done 
于 2013-11-02T16:28:01.093 に答える