Code: Alles auswählen
[ ! -e ../dest/dir/file ] &&
MOVE_COMMAND ./dir/file ../dest/ &&
[ -e ../dest/dir/file ] &&
[ ! -e ./dir/file ] &&
echo thats it
Code: Alles auswählen
[ ! -e ../dest/dir/file ] &&
MOVE_COMMAND ./dir/file ../dest/ &&
[ -e ../dest/dir/file ] &&
[ ! -e ./dir/file ] &&
echo thats it
Code: Alles auswählen
FILE=./dir/file
mkdir -p ../dest/$(dirname $FILE)
mv $FILE ../dest/$(dirname $FILE)/
wie kommst du jetzt auf mkdir???hikaru hat geschrieben:Zerlege dein MOVE_COMMAND:Code: Alles auswählen
FILE=./dir/file mkdir -p ../dest/$(dirname $FILE) mv $FILE ../dest/$(dirname $FILE)/
Code: Alles auswählen
mv ./dir ../dest/ &&
Das verschiebt aber alle Dateien unter ./dir und nicht nur ./dir/filerendegast hat geschrieben:Code: Alles auswählen
mv ./dir ../dest/ &&
Code: Alles auswählen
$ ls test_1 test_2
test_1:
file
test_2:
$ find test_1 -name file | xargs mv -t test_2/
$ ls test_1 test_2
test_1:
test_2:
file
Das erhält aber nicht die unter test_1 existierende Verzeichnisstruktur unter test_2.habakug hat geschrieben:$ find test_1 -name file | xargs mv -t test_2/
Code: Alles auswählen
$ ls -R test_1
test_1:
sub
test_1/sub:
file
$ ls -R test_2
test_2:
$ [[ ! -e test_2/sub/file ]]; mv $(find test_1 -name file | sed -e s:\/file::g) test_2/
$ ls -R test_1
test_1:
$ ls -R test_2
test_2:
sub
test_2/sub:
file
Code: Alles auswählen
$ ls -R test_1 test_2
test_1:
sub
test_1/sub:
sub_a
test_1/sub/sub_a:
file
test_2:
$ mv $(find test_1 -name file | sed -e s:\/file::g) test_2/
$ ls -R test_1 test_2
test_1:
sub
test_1/sub:
test_2:
sub_a
test_2/sub_a:
file
Nach einem find in einem directory tree will ich die files mit vollem Pfad sichern statt löschen.hikaru hat geschrieben:Vielleicht sollte linuxCowboy mal die Situation genauer spezifizieren.
Code: Alles auswählen
mvx () { [ -f "$1" ] && f=`echo $1|perl -pe's%^\.*/%%'` && d=${f%/*} && mkdir -p "${2%/}/$d" && mv -v "$1" "${2%/}/$d";}
Code: Alles auswählen
(IFS=$'\n'; for i in `find -name '*wav'`;do mvx "$i" ../d2;done)
Code: Alles auswählen
mvxt () { [ ! -f "$1" ] && D="$1" && shift && for F;do mvx "$F" "$D";done;}
Code: Alles auswählen
/tmp/d1 $ mvx () { [ -f "$1" ] && f=`echo $1|perl -pe's%^\.*/%%'` && { if [[ $f =~ / ]];then d=${f%/*};else d=;fi;} && mkdir -p "${2%/}/$d" && mv -v "$1" "${2%/}/$d";}
Code: Alles auswählen
mvx ()
{
[ -f "$1" ] &&
f=`echo $1 | perl -pe 's%^\.*/%%'` &&
{
if [[ $f =~ / ]]; then
d=${f%/*}
else d=
fi
} &&
mkdir -p "${2%/}/$d" &&
mv -v "$1" "${2%/}/$d"
}
Code: Alles auswählen
/tmp/d1 $ touch x.{wav,mp3}
/tmp/d1 $ llr ../d*
../d1:
total 4
drwxr-xr-x 2 dtc dtc 4096 24.12. 2014 01:42:23 dir/
-rw-r--r-- 1 dtc dtc 0 24.12. 2014 01:42:44 x.mp3
-rw-r--r-- 1 dtc dtc 0 24.12. 2014 01:42:44 x.wav
2 Files 0 Links 1 Dir - 4.096 Bytes
../d1/dir:
total 0
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 a.mp3
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 a.wav
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 b.mp3
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 b.wav
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 'c d.mp3'
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 'c d.wav'
6 Files 0 Links 0 Dirs - 0 Bytes
../d2:
total 4
drwxr-xr-x 2 dtc dtc 4096 24.12. 2014 01:42:23 dir/
0 Files 0 Links 1 Dir - 4.096 Bytes
../d2/dir:
total 0
8 Files 0 Links 2 Dirs # 8.192 Bytes
/tmp/d1 $ (IFS=$'\n'; for i in `find -name '*wav'`;do mvx "$i" ../d2;done)
`./x.wav' -> `../d2/x.wav'
`./dir/b.wav' -> `../d2/dir/b.wav'
`./dir/a.wav' -> `../d2/dir/a.wav'
`./dir/c d.wav' -> `../d2/dir/c d.wav'
/tmp/d1 $ llr ../d*
../d1:
total 4
drwxr-xr-x 2 dtc dtc 4096 24.12. 2014 01:49:55 dir/
-rw-r--r-- 1 dtc dtc 0 24.12. 2014 01:42:44 x.mp3
1 File 0 Links 1 Dir - 4.096 Bytes
../d1/dir:
total 0
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 a.mp3
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 b.mp3
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 'c d.mp3'
3 Files 0 Links 0 Dirs - 0 Bytes
../d2:
total 4
drwxr-xr-x 2 dtc dtc 4096 24.12. 2014 01:49:55 dir/
-rw-r--r-- 1 dtc dtc 0 24.12. 2014 01:42:44 x.wav
1 File 0 Links 1 Dir - 4.096 Bytes
../d2/dir:
total 0
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 a.wav
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 b.wav
-rw-r--r-- 1 dtc dtc 0 23.12. 2014 20:21:46 'c d.wav'
3 Files 0 Links 0 Dirs - 0 Bytes
8 Files 0 Links 2 Dirs # 8.192 Bytes
/tmp/d1 $
Code: Alles auswählen
Fmvx ()
{
[[ ! $2 || $1 = -h || $1 = --help || ! -f $1 || -e $2 && ! -d $2 ]] &&
echo "\n\t $FUNCNAME filepath/file dir # file => dir/filepath/file\n" &&
return
local filepath=$1
[[ $filepath =~ ^\.*/(.*) ]] && filepath=${BASH_REMATCH[1]}
if [[ $filepath =~ / ]]; then
filepath=${filepath%/*}
else
filepath=
fi
mkdir -p "${2%/}/$filepath" &&
mv -v "$1" "${2%/}/$filepath"
}
Code: Alles auswählen
(IFS=$'\n'; for i in `find -name '*.8'`;do Fmvx "$i" ../d2;done)